MySQL SELECT über mehrere Tabellen

emmmmmi

emmmmmi

Aktives Mitglied
Thread Starter
Dabei seit
15.01.2006
Beiträge
512
Reaktionspunkte
18
Hallo zusammen!

Ich stehe gerade vor einem Problem und finde einfach keine passende Lösung.

Die Ausgangssituation ist so, dass ich mehrere Tabellen (t1, t2, t3, t4) habe und jede dieser Tabellen hat eine spalte c.
Jetzt möchte ich alle Zeilen haben, bei der die Spalte c = $userid ist. Die Ergebnisse bisher waren, dass es ein "ambiguous column name" oder leere Ergebnisse bekomme.

Vermutlich ist die Lösung ein korrekter JOIN?

PHP:
$query = "SELECT c2, c3, c4 FROM t1 LEFT JOIN (t2, t3, t4) USING c"

Das war so meine grobe Idee. Kann mich da wer auf den richtigen Weg bringen?

Danke,
Gruß emmi
 
Hi,

"ambiguous" sagt doch schon alles ;) Das Problem ist, dass die Datenbank nicht erkennt, welche Spalte aus welcher Tabelle wo genau genommen werden sollen, da sie alle den gleichen Namen haben. Also muss du referenzieren und sagen, welche Spalte aus welcher Tabelle kommt.


Code:
SELECT t1.c, t2.c, t3.c, t4.c
FROM tabelle1 t1, tabelle2 t2, tabelle3 t3, tabelle4 t4
WHERE t1.c = $user_id
    AND t2.c = $user_id
    AND t3.c = $user_id
    AND t4.c = $user_id

Damit erreichst, dass nur die Einträge erscheinen, bei denen die UserID "$user_id" in allen 4 Tabellen gleich c ist.

Viele Grüße
Martin
 
Danke für die Antwort Martin.
Im Prinzip ist das meine Lösung, aber ich hab mich wohl auch etwas blöd ausgedrückt. Ich möchte aus jeder der Tabellen alle Zeilen haben, die in der Spalte unternehmen (vorher c) den Wert $userid haben. Das soll auch passieren wenn in der einen Tabelle mal eine Spalte nicht vorkommt. Hab zum Verständnis eine kleine Skizze angehangen.

Ein Beispiel wäre: table1 hat 3 Zeilen wo unternehmen = $userid ist, table2 hat eine, table3 hat keine. Jetzt wollte ich alle 4 Zeilen mit einem SELECT bekommen. Ist das so möglich?
 

Anhänge

  • datenbank.png
    datenbank.png
    14,5 KB · Aufrufe: 108
Wunderbar, danke Martin.
Ich hab an alles gedacht, aber UNION wohl irgendwie übersehen. Klappt bisher hervorragend :)
 
Zurück
Oben Unten