bugge: mysql select mehrere tabellen, wie erkenne ich welche aktuell

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

  1. 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

    1. :) 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

      1. Hallo?
        Hats geholfen??

        Grus