MySQL5 Join und mehrfache gleiche Datensätze
Lido
- datenbank
Hallo an alle MySQL-Freaks,
ich stehe vor einer kleinen :eek: Herausforderung mit einer SQL-Abfrage über mehrere Tabellen. Ich denke ein Join wäre das richtige....
Meine DB-Struktur sieht so aus:
+---------------------+ +---------------------+ +---------------------+
| tabelle invoice | | tabelle creditor | | tabelle debitor |
+---------------------+ +---------------------+ +---------------------+
| invoice_id | | creditor_id | | debitor_id |
| invoice_creditor_id | | creditor_longname | | debitor_firstname |
| invoice_debitor_id | | creditor_shortname | | debitor_lastname |
| usw... | | usw... | | usw... |
+---------------------+ + --------------------+ + --------------------+
Meine Query sieht so aus:
$sql="SELECT DISTINCT invoice.invoice_id,
invoice.invoice_creditor_id,
invoice.invoice_debitor_id,
creditor.creditor_longname,
creditor.creditor_shortname,
debitor.debitor_firstname,
debitor.debitor_lastname
FROM invoice, creditor, debitor
ORDER BY invoice.invoice_id ASC;";
Das Resultat sieht so aus:
+------------+---------------------+--------------------+--------
| invoice_id | invoice_creditor_id | invoice_debitor_id | usw...
+------------+---------------------+--------------------+--------
| 2 | 2 | 1 | usw...
+------------+---------------------+--------------------+--------
| 2 | 2 | 1 | usw...
+------------+---------------------+--------------------+--------
| usw... | | |
+------------+---------------------+--------------------+--------
Das Problem: Die obige Query liefert mir alle Werte mehrfach (kartesiches Produkt). Ich möchte eine Abfrage erstellen die mir obiges Resultat OHNE doppelte bzw. mehrfache einträge liefert.
Frage: Wie muss dann meine Query lauten, damit jeder Datensatz nur EINMAL auftaucht?
Auf eure Antworten freue ich mich jetzt schon!
Hallo,
SELECT DISTINCT
invoice.invoice_id,
[...] -- Spaltenliste, sehr erfreulich!
-- viel zu oft sieht man hier SELECT *
FROM
invoice,
creditor,
debitor
ORDER BY
invoice.invoice_id ASC;";
Das Problem: Die obige Query liefert mir alle Werte mehrfach (kartesiches Produkt). Ich möchte eine Abfrage erstellen die mir obiges Resultat OHNE doppelte bzw. mehrfache einträge liefert.
wir haben hier zwei Artikel, die die Grundlagen von Joins vermitteln:
- Einführung in Joins
- Fortgeschrittene Jointechniken
und freuen uns über Rückmeldungen, auch über Verbesserungsvorschläge.
Freundliche Grüße
Vinzenz