2010-11-23 9 views
3

Ich habe eine Download-Komponente und möchte die Kategorien die Unterkategorien und Artikelanzahl im Voraus anzeigen. 1 der beiden Werke, aber beim Versuch, beide zu bekommen, ist das Ergebnis die Multiplikation von beiden.2 LINKE VERBINDUNGEN zählen in einer Abfrage

Der Code ich benutze:

ein SELECT *,
count (b.parentid) AS catscount,
count (c.id) AS itemscount
FROM (jos_foc_downl_categories AS einem LEFT JOIN. jos_foc_downl_items AS c = ON c.catid a.id)
LEFT JOIN jos_foc_downl_categories AS b ON b.parentid = a.id
WHERE a.parentid = 0
GROUP BY a.id

Das Ergebnis für eine Kategorie mit 4 Unterkategorien und 5 Dateien in der Anzahl 20 für Katzencount und 20 für Artikelcount.

Was ist falsch daran? Vielen Dank!

Antwort

7

Sie zählen alle Zeilen, einschließlich duplizierter Werte. Verwenden Sie DISTINCT, um jeden einzelnen Wert nur einmal zu zählen:

SELECT a.*, 
count(DISTINCT b.parentid) AS catscount, 
count(DISTINCT c.id) AS itemscount 
.... 
+0

Vielen Dank für die schnelle Antwort! Das funktioniert wie Charme. – Bert

+0

Ich musste eine GROUP BY Bedingung pro Anzahl hinzufügen, aber es hat funktioniert. Danke –

Verwandte Themen