Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Count funktioniert nicht

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von DonKanallie, 14 August 2012.

  1. DonKanallie

    DonKanallie Neuer Benutzer

    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 =)
     
  2. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    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
     
  3. DonKanallie

    DonKanallie Neuer Benutzer

    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;
    
     
    PLSQL_SQL und Walter gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden