MySQL innodb - join abfrage -

Kipperlenny

Erfahrenes Mitglied
Moin Moin

ich habe ne innodb mysql DB - mit drei Tabellen:

bauten (bauten_id, name, ....)
rohstoffe (rohstoffe_id, name, ...)
bauten_needs_rohstoffe (bauten_id, rohstoffe_id, menge)

Nun möchte ich alle Einträge aus "bauten", wenn diese einträge in "bauten_needs_rohstoffe" haben, dann auch die.

Folgende SQL Abfrage habe ich:
Code:
SELECT A . * , B.rohstoffe_id, B.menge
FROM bauten AS A
LEFT OUTER
JOIN bauten_needs_rohstoffe AS B ON A.bauten_id = B.bauten_id
LIMIT 0 , 30

bringt auch das richtige Ergebnis -allerdings bei mehreren Einträgen in "bauten_needs_rohstoffe" auch mehrere Zeilen im Ergebnis.
Allerdings hätte ich diese mehreren Einträge gerne in der gleichen Zeile, damit es nicht zu Dopplungen kommt.

Das ganze natürlich in ner Zeichnung veranschaulicht....

Danke!!

lenny
ps: und kann ich im gleichen SQL statement die ID der Rohstoffe durch die Namen ersetzen?
 

Anhänge

  • db.jpg
    db.jpg
    34,4 KB · Aufrufe: 69
Hi Lenny,

was du da gerne hättest, nennt sich Kreuztabelle und ist mit MySQL nicht ganz so einfach zu lösen.
Falls Du das Ergebnis der Abfrage z.B. mit einer Scriptsprache wie PHP verarbeitest, könntest Du die Ausgabe einfach über einen Gruppenwechsel steuern. Wenn Du das Ergebnis direkt von der Datenbank haben willst, hilft Dir vielleicht der Artikel von Giuseppe Maxia weiter.

LG
 
Zurück