MySQL: Join / Inner?
Fabienne
- datenbank
0 Vinzenz Mai0 Fabienne
Hi zusammen,
habe drei Tabellen:
1. kunden (id,name,...)
2. zahlungsarten (id,zahlungsname,...)
3. kunden_zu_zahlungsarten (kunden_id,zahlungsarten_id)
Wie kann ich in einer einzigen MySQL-Anfrage erreichen, dass pro Kundendatensatz die Spalten der möglichen Zahlungsarten angefügt werden?
Bei den JOINs werden bei mir stehts bei 2 möglichen Zahlungsarten auch 2 Zeilen für den selben Kunden anglegt.
Ziel:
Name | VISA | Rechnung
Meier | X |
Müller | X | X
Richter| | X
Über Join unerwünschter Nebeneffekt:
Meier | X
Müller | X
Müller | | X
Richter| | X
Ich steh grad auf dem Schlauch, wo mein Fehler steckt:
SELECT * FROM kunden
LEFT JOIN kunden_zu_zahlungsarten ON kunden.id=kunden_zu_zahlungsarten.kunden_id
Vielen Dank für Eure Hinweise!
Fabe
Hallo Fabienne,
- kunden (id,name,...)
- zahlungsarten (id,zahlungsname,...)
- kunden_zu_zahlungsarten (kunden_id,zahlungsarten_id)
wobei die Anzahl der Zahlungsarten unbestimmt ist?
Wie kann ich in einer einzigen MySQL-Anfrage erreichen, dass pro Kundendatensatz die Spalten der möglichen Zahlungsarten angefügt werden?
Du möchtest eine Kreuztabellenabfrage machen, das unterstützt MySQL nicht (MS Access seit Ewigkeiten oder ein aktueller SQL-Server hingegen schon).
Ziel:
Name | VISA | Rechnung
Meier | X |
Müller | X | X
Richter| | X
Mit einer Stored Procedure solltest Du das hinbekommen. Für älteres T-SQL (MS SQL-Server) findet sich ein Ansatz im Archiv. Du musst halt recherchieren, wie Du das in MySQL hinbekommst (5.x Voraussetzung).
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
... wie Du das in MySQL hinbekommst (5.x Voraussetzung).
Na Prima!
OK, meine Lösung wäre per PHP:
Alles in ein Array einlesen und die "Spalten" entsprechend auffüllen.
Ist aber umständlich => also bleibt es bei 2 Zeilen.
Vielen Dank
Fabienne