Mehrere Datensätze als Ergebnis trotz Count

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrere Datensätze als Ergebnis trotz Count

    Moin Leute

    Ich will in einem Quere mit zwei left Joins zwei Counts ausführen, ohne dass diese Daten auch im Endresultat gruppiert werden. Das heisst ich will die Anzahl Daten, die auf einen Teil des Querys zutreffen (etwa die Anzahl Datensätze, die in der ersten Tabelle betroffen sind und dasselbe für die dritte Tabelle). Der Query sieht folgendermassen aus:

    Code:
    SELECT COUNT(bidid) as bidtotal, bidid, biduserid, bidprice, bidtime, userid, username, ROUND(SUM(repstar)/COUNT(repstar),1) as reputation FROM ks_1_bids
    LEFT JOIN ks_1_users ON userid = biduserid
    LEFT JOIN ks_1_userreps ON biduserid = repgetuserid
    WHERE itemid = '1' ORDER BY bidprice, bidtime DESC LIMIT 0, 20
    In der Tabelle ks_1_bids hat es 2 Datensätze, die auf die Bedingung userid = biduserid zutrifft, in der Tabelle ks_1_userreps ebenfalls 2. Somit sollte mir COUNT(bidid) und COUNT(repstar) als ergebnis je 2 liefern. COUNT(bidid) liefert mir allerdings 3. Und als Ergebnis erhalte ich folgendes:

    bidtotal bidid biduserid bidprice bidtime userid username reputation
    3 1 1 5 1233207544 1 testuser 3.0

    Erhalten will ich aber:

    bidtotal bidid biduserid bidprice bidtime userid username reputation
    2 1 1 5 1233207544 1 testuser 3.0
    2 2 2 7 1233577544 1 user2 0.0

    Versteht ihr, worauf ich hinaus will? Und kennt jemand eine Lösung mit einem oder wenigen Querys zu diesem Problem?
    Zuletzt geändert von fightwithxml; 04.02.2009, 10:31.

  • #2
    Was hältst du denn von einem GROUP BY?

    Kommentar


    • #3
      Kannst du mal ein Beispiel geben? Ich sehe nicht, wie GROUP BY hier helfen könnte... So wie ich es verstehe, gruppiert er die Datensätze, was ja eh schon passiert ist.

      Kommentar


      • #4
        Hallo,

        also ich habe nicht so ganz verstanden, worauf du hinaus willst, aber vielleicht kann ich dir ein paar Anregungen geben:


        So wie es aussieht willst du nach dem User gruppieren, sodass alle User einzeln mit den Daten ausgegeben werden. -> Dann tue das. (biduserid)


        und auch bei SQL gibt es Ablaufsteuerungsfunktionen mit denen du dann statt einem COUNT einfach ein SUM benutzen kannst und entweder summierst du dann 1 oder 0, wenn dieser Datensatz nicht mitgezählt werden soll.
        signed oder unsigned... das ist hier die Frage

        Kommentar

        Lädt...
        X