mysql select mehrere tabellen, wie erkenne ich welche aktuell
bugge
- php
Hallo,
ich habe eine Select-Abfrage:
SELECT * FROM artikel, news, sites
Nun möchte ich durch jede Zelle gehen und nach einer RegExp suchen:
foreach ($row as $_cell) {
if(preg_match("/artikel\/".$q."/iU",$_cell)) {
$result .= '<li>'.$row["ID"].'</li>';
}
}
Gibt es hier eine Möglichkeit, in der $result auch anzugeben, aus welcher Tabelle diese Info gezogen wurde? Also sowas was $row["table_name"], nur halt ohne dass ich in jeder Tabelle eine Spalte table_name anlegen muss, wo dann durchgängig in jeder Zeile der Name der Tabelle steht ^^
Danke für eure Hilfe
Hallo bugge
SELECT * FROM artikel, news, sites
Wenn mit einer SQL-Abfrage mehrere Tabellen angesprochen werden, tut man dies üblicherweise um diese zu verknüpfen. Das heißt zu einer Zeile in einer Tabelle holst du noch weitere Informationen in einer anderen Tabelle.
Du hast zum Beispiel eine Tabelle "artkel" und eine Tabelle "authoren" und möchtest von der DB alle Artikel und deren Autoren-Namen.
SELECT artikel.*, authoren.vorname, authoren.nachname
FROM artikel, authoren
WHERE artikel.authoren_id = autoren.id
Mir scheint mit deiner Abfrage möchtest du einfach Zeilen von diversen Tabellen.
Entweder machst du das in verschiedenen Abfragen oder du kannst auch den UNION Befehl verwenden http://dev.mysql.com/doc/refman/5.1/de/union.html
Das sieht in deinem Fall vermutlich dann so aus:
(SELECT title, inhalt FROM artikel)
UNION
(SELECT title, inhalt FROM news)
UNION
(SELECT title, inhalt FROM sites)
ORDER BY title
Gruß vom
einfachsten CMS
:) Ach ja und um deine ursprüngliche Frage noch zu Beantworten:
Damit du weisst von welcher Tabelle die Zeile ist, gibst du diese als fixes Attribut mit:
(SELECT 'artikel' as tabelle, title, inhalt FROM artikel)
UNION
(SELECT 'news' as tabelle, title, inhalt FROM news)
UNION
(SELECT 'sites' as tabelle, title, inhalt FROM sites)
ORDER BY title
Hallo?
Hats geholfen??
Grus