Count () und linkes Join-Problem

8

Ich habe ein Problem mit der Abfrage, die eine Liste von Geschäften mit der Anzahl der damit verbundenen Produkte anzeigt. Ich spiele jetzt schon eine ganze Weile mit linken Joins herum, aber ohne Erfolg. Die Tabellen haben folgende Strukturen:

Shop-Tabelle mit Spalten: id , name

Produkttabelle mit Spalten: id , name , status , shop

Die Abfrage lautet wie folgt:

%Vor%

Ich bekomme keine Geschäfte, die 0 Produkte haben. Wie kann ich das bitte erreichen?

Die zugrunde liegende Datenbank ist MySQL.

Danke! Krt_Malta     

Krt_Malta 13.02.2011, 10:01
quelle

4 Antworten

21

Sie müssen SHOP auf der LINKEN Seite, da die rechte Seite diejenige ist, die möglicherweise keine Daten hat, in diesem Fall PRODUKT.

Nicht nur das, Sie brauchen die WHERE-Bedingung als LEFT-JOIN-ON-Bedingung, so dass es sich zu Produkten auf der Statusbedingung verbindet und nur das Produkt (während des Ladens) abruft, auch wenn der Status nicht gewünscht ist.

%Vor%     
RichardTheKiwi 13.02.2011, 10:22
quelle
1
%Vor%     
ibrahim sandallı 13.02.2011 10:25
quelle
0

Sie müssen OR p.status IS NULL zu Ihrer where-Klausel hinzufügen.

%Vor%     
Tommi 13.02.2011 10:11
quelle
0

Ich hatte auch dieses Problem und obwohl ich mir nicht ganz sicher bin, warum das Prädikat auf das Jojn selbst und nicht auf die eigentliche Hauptfrage gelegt wird, wie man es löst.

Ich habe das Ganze tatsächlich dokumentiert, bevor ich das gelesen habe. Ich habe ein einfaches Beispiel mit zwei zwei kleinen Tabellen verwendet, es erklärt, ich hoffe den Unterschied, vielleicht wird es helfen

Ссылка

    
John McGeechan 03.04.2014 13:57
quelle

Tags und Links