Sven Rautenberg: falsches Ergebnis bei Mehrfach-Join

Beitrag lesen

Moin!

Mit einem JOIN funktioniert die Abfrage. Möcht ich die Angebote zusätzlich abfragen, erhalte ich ein falsches Ergebnis. Nämlich das Produkt von Anfragen x Angebote!? Also bei 3 Anfragen und 2 Angeboten steht im Ergebnis 2 mal 6!

Stimmt, und das muß auch so sein bei deinem Query.

Stell dir den Vorgang mal Schritt für Schritt vor:

SELECT bizgap_stammdaten.mitglied_id, firmenname, kontosperre, DATE_FORMAT( lastlogin, '%d.%m.%Y %H:%i:%s' ) AS lastlogin, DATE_FORMAT( anmeldedatum, '%d.%m.%Y %H:%i:%s' ) AS anmeldedatum, COUNT( bizgap_anfragen.anfrage_id ) AS anzahl_anfragen, COUNT( bizgap_angebote.angebot_id ) AS anzahl_angebote

Du willst "diverse Spalten" wissen...

FROM bizgap_stammdaten

...aus dieser Tabelle...

LEFT JOIN bizgap_anfragen
ON bizgap_anfragen.mitglied_id = bizgap_stammdaten.mitglied_id

...verknüpft mit dieser Tabelle...

LEFT JOIN bizgap_angebote
ON bizgap_angebote.mitglied_id = bizgap_stammdaten.mitglied_id

...und dieser Tabelle.

Lass dir das Ergebnis dieser Verknüpfung mal ausgeben. Denn damit arbeitet auch das GROUP BY weiter.

GROUP BY bizgap_stammdaten.mitglied_id

Damit faßt du jetzt identische Mitglieds-IDs zusammen. Eine Auseinanderhaltung von Angeboten und Anfragen ist darin gar nicht angegeben.

ORDER BY 'bizgap_stammdaten.mitglied_id' ASC
LIMIT 0 , 30

Sortieren und limitieren hat optische Reize, aber keine inhaltlich-qualitativen Auswirkungen auf das Ergebnis.

Es kann durchaus sein, dass du für die Ermittlung der zwei Anzahlen auch zwei Querys machen mußt.

- Sven Rautenberg

--
My sssignature, my preciousssss!