JOIN - Problem
Kalle_B
- datenbank
Hallöle,
wenn per JOIN mehrere Datensätze zu einem bereits ausgewählten hinzukommen, wird der ausgewählte vervielfacht.
Beispiel:
SELECT wgr.warengruppe, prod.produkt
LEFT JOIN produkte prod
ON prod.wgruppen_id = wgr.id
FROM warengruppen wgr
Gemüse Blumenkohl
Gemüse Sellerie
Obst Apfel
Obst Apfelsine
Obst Banane
Wurst NULL
Obst wird dreimal genannt, obwohl es die Warengruppe Obst nur einmal gibt. Wie mache ich es, dass die Warengruppe nur einmal kommt, also so etwa:
Gemüse Blumenkohl
NULL Sellerie
Obst Apfel
NULL Apfelsine
NULL Banane
Wurst NULL
Hier nur das Prinzip, es geht um ein komplexeres Ergebnis. Eine Auswertung wäre damit wesentlich einfacher.
LG, Kalle
Hello,
Hier nur das Prinzip, es geht um ein komplexeres Ergebnis. Eine Auswertung wäre damit wesentlich einfacher.
mehrere Datensätze erschaffen? gar nicht, du wirst Auswertungslogik außen herum setzen müssen, Stichwort Gruppenwechsel.
einen Datensatz erschaffen? mit einer entsprechenden Gruppierungsfunktion, z.B. GROUP_CONCAT.
MfG
Rouven
Hallo, Rouven,
vielleicht ist mein Anliegen doch nicht richtig rübergekommen. Ich poste mal das Original- Ergebnis:
3 98754 4208 Adam Opel GmbH 11205 4207 FPM: Aktuelle Herausforderungen und Trends
3 98754 4208 Adam Opel GmbH 11208 4204 FPM: Aktuelle Herausforderungen und Trends
3 98754 4208 Adam Opel GmbH 11234 4206 FPM: Aktuelle Herausforderungen und Trends
3 98754 4208 Adam Opel GmbH 11236 4205 FPM: Aktuelle Herausforderungen und Trends
3 98754 4208 Adam Opel GmbH 11238 4203 FPM: Aktuelle Herausforderungen und Trends
Hier ist zu sehen, dass person_id 4208 einen Gesprächstermin bei Opel hat, seine 5 Kollegen aber im Workshop FPM: Aktuelle ... sitzen. Ich brauche 6 Ergebniszeilen, nicht 5.
Mein Wunsch- Ergebnis wäre dieses:
3 98754 4208 Adam Opel GmbH NULL NULL NULL
3 NULL NULL NULL 11205 4207 FPM: Aktuelle Herausforderungen und Trends
3 NULL NULL NULL 11208 4204 FPM: Aktuelle Herausforderungen und Trends
3 NULL NULL NULL 11234 4206 FPM: Aktuelle Herausforderungen und Trends
3 NULL NULL NULL 11236 4205 FPM: Aktuelle Herausforderungen und Trends
3 NULL NULL NULL 11238 4203 FPM: Aktuelle Herausforderungen und Trends
Hier das SQL:
SELECT
slt1.nr slot_nr
,kon1.id kon_id
,kon1.besucher_id
,per1.bezeichnung aussteller_name
,evb1.id evb_id
,evb1.adress_id evb_adr_id
,evt1.name event_name
FROM tm_slots slt1
-- GEBUCHTE KONTAKTE
LEFT JOIN tm_kontakte kon1
#N kon1.slot_nr=slt1.nr AND ()
ON kon1.slot_nr=slt1.nr AND kon1.besucher_id IN (4207,4204,4206,4205,4203,4208)
-- AUSSTELLER-NAME
LEFT JOIN tm_adressen AS per1
ON per1.id=kon1.aussteller_id
-- BESUCHER-NAME ZUM KONTAKT WG. SORTIERUNG
LEFT JOIN tm_adressen AS per2
ON per2.id=kon1.besucher_id
-- GEBUCHTE EVENTS
LEFT JOIN tm_eventbuchungen evb1
ON ( evb1.von_slot_nr=slt1.nr OR evb1.bis_slot_nr=slt1.nr ) AND evb1.adress_id IN (4207,4204,4206,4205,4203,4208)
-- EVENTNAME
LEFT JOIN tm_events AS evt1
ON evt1.id=evb1.wunsch_event_id
-- BESUCHER-NAME ZUM EVENT WG. SORTIERUNG
LEFT JOIN tm_adressen AS per3
ON per3.id=evb1.adress_id
WHERE slt1.owner_id=5
ORDER BY slt1.nr, per2.nname, per2.vname, per3.nname, per3.vname
LG, Kalle
Hallo, Rouven,
ich mache zwei SQL- Abfragen und mische sie mir wie gewünscht mit PHP.
LG Kalle