Forum Doku Wiki Blog

Forumsarchiv 2009, Januar
JOIN - Problem

archivierte Beiträge lesen

  1. (DATENBANK) JOIN - Problem von Kalle_B, 30. 01. 2009, 17:00

JOIN - Problem

Der folgende Beitrag wurde am 30. 01. 2009, 17:00 Uhr von Kalle_B veröffentlicht.

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

JOIN - Problem

Der folgende Beitrag wurde am 30. 01. 2009, 17:07 Uhr von Rouven veröffentlicht.

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

--
-------------------
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)

Death is nature's way of telling you to slow down.

JOIN - Problem (Original)

Der folgende Beitrag wurde am 30. 01. 2009, 17:39 Uhr von Kalle_B veröffentlicht.

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

ich mache es anders

Der folgende Beitrag wurde am 30. 01. 2009, 18:04 Uhr von Kalle_B veröffentlicht.

Hallo, Rouven,

ich mache zwei SQL- Abfragen und mische sie mir wie gewünscht mit PHP.

LG Kalle

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4