tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
15
ZUGRIFFE
807
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    116
    Hallo zusammen,

    ich habe eine in phpMyAdmin funktionierende Abfrage. Nun will ich die Ergebnisse zählen. Mit count bekomme ich viele Einzelwerte (Zahlen), die ich allerdings als Summe benötige. Wie kann ich das umsetzen?

    Code :
    1
    
    select count(*) from ordertab LEFT JOIN orderart ON ordertab.id = orderart.orderid LEFT JOIN reviews ON ordertab.userid = reviews.userid AND orderart.artid = reviews.objectid where 1 and ISNULL(reviews.id) GROUP BY ordertab.ordernr

    Grüße & Danke

    quertail
     

  2. #2
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    380
    Probier mal das

    Code :
    1
    
    select count(*) from ordertab LEFT JOIN orderart ON ordertab.id = orderart.orderid LEFT JOIN reviews ON ordertab.userid = reviews.userid AND orderart.artid = reviews.objectid where 1 and ISNULL(reviews.id) GROUP BY ordertab.ordernr LIMIT 0 , 1
     
    Ich bin keine Signatur! - Auch wenn`s so aussieht :) - Wirklich!

    Über ein Danke freut sich jeder

  3. #3
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    116
    Hallo & frohes neues Jahr,

    das funktioniert leider nicht.

    Grüße

    querytail
     

  4. #4
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    380
    kommt eine Fehlermeldung oder wird noch alles angezeigt?
     
    Ich bin keine Signatur! - Auch wenn`s so aussieht :) - Wirklich!

    Über ein Danke freut sich jeder

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    So, mal formatieren und schon sieht man den Fehler

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    SELECT COUNT(*)
    FROM
        ordertab 
        LEFT JOIN orderart 
            ON ordertab.id = orderart.orderid 
        LEFT JOIN reviews 
            ON ordertab.userid = reviews.userid 
            AND orderart.artid = reviews.objectid 
    WHERE 
        1 
        AND ISNULL(reviews.id) 
    GROUP BY 
        ordertab.ordernr
    Du hast ein GROUP BY auf die ordernr. Ergo gibt es die ANzahl pro ordernr. Aus.
    Wenn du die Anzahl über alle haben willst, dann nimm der GROUP BY raus.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    116
    Hallo & Danke,

    @Kalito: es kommt keine Fehlermeldung.

    @Yaslaw: Wenn ich das "GROUP BY ordertab.ordernr" rausnehme, wird mir nur eine (1), aber viel zu große Zahl ausgegeben.

    Grüße

    querytail
     

  7. #7
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Von was genau willst du denn die Anzahl haben?
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  8. #8
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    116
    Alle Ordernummern bzw. IDs (ordertab.id oder ordertab.ordernr).
     

  9. #9
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Pro was?
    Einfach über alles? Dann stimmt das SQL ohne den GROUP BY.
    Pro Ordensnummer? Dann stimmt deines, einfach im SELECT-Teil noch die Ordenummer inzufügen damit du weisst welche Nummer welche Anzahl hat

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    SELECT
        ordertab.ordernr,
        COUNT(*)
    FROM
        ordertab 
        LEFT JOIN orderart 
            ON ordertab.id = orderart.orderid 
        LEFT JOIN reviews 
            ON ordertab.userid = reviews.userid 
            AND orderart.artid = reviews.objectid 
    WHERE 
        1 
        AND ISNULL(reviews.id) 
    GROUP BY 
        ordertab.ordernr
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  10. #10
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    116
    So hatte ich es ja (fast) und da werden mir hunderte Einzelwerte angezeigt. Jeweils die Ordernummer mit der Anzahl der Artikel. Ich benötige aber nun noch die Gesamtanzahl der Ordernr.

    ordernr count(*)


    20---- ----13
    21---- ----1
    26---- ----3
    27---- ----3
    28---- ----6
    31---- ----3
    .
    .
    .
     

  11. #11
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Tja, die Gesammtzahl ist nun mal dein Anfangsscript ohne den GROUP BY. Genauso wie ich es oben beschreiben habe. Wenn die Zahl die da kommt nicht das gesuchte ist, dann brauche ich viel mehr Infos von dir um herauszufinden was falsch geht. Denn rein aus SQL-Sicht ist dein Script ohne den GROUP BY die [Summe aller Counts mit GROUP BY].
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  12. #12
    Biber2 Biber2 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Ort
    Bremen
    Beiträge
    215
    Moin querytail,

    wenn du doch aber sagst "Ich benötige aber nun noch die Gesamtanzahl der Ordernr"...
    -> dann mach doch kein "Count(*)" = Anzahl aller Datensätze, sondern
    -> mach ein "Count(distinct(ordertab.ordernr))".

    Genau so hast du es doch verbal auch beschrieben.

    Grüße
    Biber
     

  13. #13
    querytail querytail ist offline Mitglied Gold
    Registriert seit
    Jul 2010
    Beiträge
    116
    Mit distinct hatte ich das auch schon versucht. Einziger Unterschied ist, dass jeweils nur ein Artikel gezählt wird.

    ordernr Count(distinct(ordertab.ordernr))

    20---- ----1
    21---- ----1
    26---- ----1
    27---- ----1
    28---- ----1
    31---- ----1

    Im phpMyAdmin sieht das immer so aus:
    Code :
    1
    
    Zeige Datensätze 0 - 29 ( 1,403 insgesamt, die Abfrage dauerte 0.0465 sek.)
    Irgendwie muss ich doch auch an die 1403 (die sind richtig) kommen.
     

  14. #14
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    phpmayadmin zeigt immer nur die ersten 30 an. Steht ja auch so.
    Wenn du das Resultat eines speziefischen haben willst, dann grenze es mit WHERE ein oder springe mit LIMIT auf die entsprchende 'Seite'
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  15. #15
    Biber2 Biber2 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Ort
    Bremen
    Beiträge
    215
    Moin querytail,

    nochmal...
    Ich meinte nicht, du solltest ein "SELECT ordernr, Count(distinct(ordertab.ordernr)) FROM (s.o.)" machen.
    Ich meinte, du solltest ein "SELECT Count(distinct(ordertab.ordernr)) as DasSind1403 FROM (s.o.)" machen.

    Grüße
    Biber
     

Ähnliche Themen

  1. Muß rausbekommen welche Einzelwerte bestimmte Gesamtwerte ergeben
    Von Jan-Frederik Stieler im Forum Smalltalk
    Antworten: 6
    Letzter Beitrag: 23.09.10, 16:25
  2. MYSQL - ABFRAGE COUNT() mit JOINS
    Von hmmNaGut im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 18.04.08, 22:55
  3. Mehrere Einzelwerte von MYSQL mit ajax
    Von MadCrusher im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 06.03.08, 18:07
  4. Antworten: 5
    Letzter Beitrag: 21.02.05, 00:23
  5. [mysql] count über 2 joins?
    Von DarkMasterDJ im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 02.02.05, 15:17