JOIN - Problem
    
Kalle_B
    
    
      
    
  - datenbank
 nicht angemeldet
 nicht angemeldetHallö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