Count funktioniert nicht

DonKanallie

Neuer Benutzer
Beiträge
2
Hi =)

also ich habe 2 Tabellen. Einmal eine Category Tabelle und einmal eine Products Tabelle. Ich habe die Categories mit Nested Sets also mit left right versehen, klappt auch alles wunderbar. meine bisherige Abfrage ist diese:

Code:
SELECT n.category_name, n.category_id,
        COUNT(DISTINCT p.category_id)-1 AS level,
        COUNT(p.category_id) AS anzahl
        FROM
            categories AS n,
            categories AS p,
            products AS pr
            WHERE n.category_left BETWEEN p.category_left AND p.category_right
            AND pr.product_category_id = p.category_id AND pr.product_shop_id = 2
            GROUP BY n.category_left
            ORDER BY n.category_left;

Es funktioniert auch alles einwandfrei, nur hab ich ein einziges Problem in der 3. Zeile. Hier möchte ich die Anzahl der Produkte ausgeben, die jede Kategorie hat (z.B. die Kategorie "möbel" hat 20 Produkte")
Hier bei dieser Abfrage bekomme ich fast das richtige ergebniss. Also das erste ergebniss ist richtig (also die erste Kategorie sagt er richtig an) jedoch danach kommt nichts richtiges raus =)
Hier das ergebniss der Abfrage:

abfrage.PNG

Also die Anzahl der "Möbel" ist richtig, aber der Rest ist falsch, z.B. Drehstühle wären es 3.

Hoffe jemand kann mir helfen, vielen Dank schonmal =)
 
Werbung:

PLSQL_SQL

SQL-Guru
Beiträge
176
Hy,

gecounted wird immer anhand deiner ausgegebenen Attribute!

Vielleicht würdest du so den richtigen Count erhalten...

Code:
select name
         ,(select count(*) from deine_tabelle b where a.nr = b.a_nr )
 
from deine_tabelle a

Wenn ich deinen Tabellenaufbau kenne würde, könnte ich dir hier besser weiterhelfen!


Lg
 
Werbung:

DonKanallie

Neuer Benutzer
Beiträge
2
ach danke, aber ich habe es schon gelöst.
falls es jemand interessiert hier meine Lösung =)

Code:
        SELECT parent.category_name, parent.category_id ,COUNT(product.product_id) AS count,
        (select count(*) from Categories parent2
        where parent.category_left > parent2.category_left
        and parent.category_right < parent2.category_right) as level
        FROM Categories parent
        LEFT OUTER JOIN Categories node
        ON node.category_left BETWEEN parent.category_left AND parent.category_right
        LEFT OUTER JOIN products product
        ON node.category_id = product.product_category_id
        WHERE product.product_shop_id = '.$sessionId.'
        GROUP BY parent.category_name
        ORDER by node.category_left;
 
Oben