Count() vermischt sich

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

  • Count() vermischt sich

    Hi,
    Habe gerade ein Problem mit einem SQL-Query mit den folgenden Query:

    Code:
    SELECT 
    	$usertbl.userid,
    	$usertbl.username,
    	$usertbl.Avatar,
    	COUNT($imgtbl.imgId) as picAnzahl,
    	COUNT($albentbl.catId) as albenAnzahl 
    FROM 
    	$usertbl 
    	LEFT JOIN 
    		$albentbl 
    	ON 
    		$albentbl.catUserid = $usertbl.userid 
    	LEFT JOIN 
    		$imgtbl 
    	ON 
    		$imgtbl.imgUserId = $usertbl.userid 
    GROUP BY 
    	$usertbl.userid 
    ORDER BY 
    	$sort $sortOrder
    Der Query funktioniert eigentlich soweit, nur gibt er mit für picAnzahl und albenAnzahl die gleichen Werte aus, obwohl sie eigentlich unterschiedlich sind.

    Habt ihr eine Idee woran das liegt?
    Wenn ich den Join für einen der beiden weglasse, gibt er mir das richtige Ergebnisse aus, aber wenn ich beide gleichzeitig benutzen will, kriege ich für beide den gleichen Wert.

  • #2
    das kommt davon, weil MySQL es nicht streng zwingt, bei Anwendung von Aggregatfunktionen alle selektierten Werte zu gruppieren, ausser die Argumente selbst. Mach das mal, dann wird's richtig.

    Kommentar


    • #3
      Hi,
      Danke schonmal für deine Hilfe.

      Verstehe aber nicht ganz was du meinst.
      Du sagst ja ich soll die selektierten Werte gruppieren (oder nicht?^^), aber wie mache ich das.

      Könntest du mir mal zeigen wie du das meinst?

      Danke schonmal!

      Kommentar


      • #4
        du hast bis jetzt nur nach userid gruppiert, für username und avatar aber nicht

        Kommentar


        • #5
          Hi,

          wenn ich jetzt aber anstatt von
          GROUP BY
          $usertbl.userid
          schreibe:
          GROUP BY
          $usertbl.userid , $imgtbl.imgId, $albentbl.catId

          Dann gibt er mir die für jeden einzeln Eintrag, also für jedes Bild und für jedes Album noch einen Wert aus.

          Also zum Beispiel wenn ein User 5 Bilder hochgeladen hat, und 5 Alben hat, dann soll er das ja eigentlich nur einmal ausgeben.
          Wenn ich aber die anderen Spalten auch noch in Group By reinpacke, dann gibt er mir den User 10mal zurück, also für jedes bild und jedes album einmal.

          Warum?

          Oder habe ich dich falsch verstanden?

          Kommentar


          • #6
            Original geschrieben von Creativ
            Wenn ich aber die anderen Spalten auch noch in Group By reinpacke, dann gibt er mir den User 10mal zurück, also für jedes bild und jedes album einmal.

            Warum?
            Weil das der Sinn einer solchen Gruppierung ist ...?

            Gruppierung betrachtet alle die Datensätze ... nun ja, "gruppiert" eben, bei denen die Kombination aller als Gruppierungskriterien angegebener Werte/Spalteninhalte eindeutig ist.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar

            Lädt...
            X