[MYSQL] Einträge aus Tabellen kombinieren

Timdaroxxa

Lieutenant
Registriert
März 2009
Beiträge
954
Hey,
wie kann ich das folgende Problem am besten lösen:

Tabelle user:

Code:
id - user_name

Tabelle user_emails:

Code:
id - user_id - address

Tabelle user_contacts

Code:
user_id - contact_id



Nun möchte ich folgendes Array ausgeben:
  • user 1
    • user_name
    • user_adresses
      • address 1
      • address 2
      • address 3
  • user 2
    • user_name
    • user_adresses
      • address 1
      • address 2
      • address 3
      • address 4
  • user 3
    • user_name
    • user_adresses
      • address 1
      • address 2


Man sieht, dass jeder User unterschiedliche viele Adressen haben kann.
Im Endeffekt sollen alle Kontakte von einem User und deren Adressen zurückgegeben werden.

Gibt es eine möglich, die Daten aus den 3 Tabellen in einem Aufruf abzuholen?

Gruß Tim
 
Bei inner joins schließt du Daten aus, die du eventuell gerne behalten möchtest. Z.B. User, die zwar Adressen aber keine Kontakte haben. Left joins behalten auch solche Daten bei. Kommt auf den Bedarf des Threaderstellers an.
 
Ok. Joins sind mir schon bekannt.
D.h. aber, dass ich mehrere doppelte Einträge, bis auf die Adressen zurückbekomme, welche ich dann noch zusammenfassen muss?
Ergänzung ()

Hey,
also hier noch die Lösung, damit alle noch verstehen was ich gemeint habe und andere die das gleiche Problem haben hier eine Lösung finden.

Einfach "GROUP_CONCAT" benutzen und nachher mit "explode" ein kleines Array erzeugen :)

Ziemlich einfach, wenn man den passenden Befehl kennt.

Gruß Tim
 
Zurück
Oben