#1056 - Can't group on 'anzahl'

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

  • #1056 - Can't group on 'anzahl'

    Hallo,

    Ich habe eine DB Kunden und eine Inserate. Nun möchte ich in der Kundenliste auch zu jedem Kunden die Anazahl geschalteter Inserate ausgeben - so weit so gut. Wenn ich aber nun die Liste nach Anzahl der Inserate ordnen möchte ($order_by = "anazahl") kommt eine Fehlermeldung:

    #1056 - Can't group on 'anzahl'

    Code:
    SELECT kunden.nachname,kunden.vorname,kunden.ort,kunden.id,kunden.aktivierungskey,kunden.angelegt,
    		DATE_FORMAT(kunden.angelegt,'%e.%c %Y, %H:%ih') AS angelegt_formatiert,
    		COUNT(DISTINCT inserate.id) AS anzahl
    	FROM db_kunden kunden
    	LEFT JOIN db_inserate inserate ON kunden.id=inserate.kunde
    	GROUP by ".$order_by.",kunden.id");
    Wo liegt das Problem?

    Gruß,
    Syco
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    das sagt dir doch schon der Server...

    Gruppieren ( oder auch: Zusammenfassen ) nach count() wär imho auch recht Sinnbefreit...

    sicher, dass du nicht nach count() sortieren (order by) wolltest?

    Kommentar


    • #3
      Wenn ich mich recht erinnere, kann man in dem Where und Group BY nicht mit Alias arbeiten.

      Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
      sondern mit den Augen das Manual zu lesen.

      Kommentar


      • #4
        dann würde die fehlermeldung anders lauten.

        läuft aber auf's selbe hinaus.

        Kommentar


        • #5
          Also ORDER by geht nicht:

          #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

          Die Sortierung der Kunden nach Anzahl Ihrer Inserate finde ich sehr wohl recht sinnvoll. Wie eine sinnvolle Abfrage aussieht die das tut, habe ich wie ihr seht noch nicht gefunden..

          btw: GROUP by anzahl allein wäre sinnlos. Aber GROUP by anzahl,kunden.id wäre es nicht, wenn es funktionieren würde
          [COLOR=darkblue].: 1+1=23 :.[/COLOR]

          Kommentar


          • #6
            da dürfte der group by NULL schmäh helfen
            mfg,
            [color=#0080c0]Coragon[/color]

            Kommentar


            • #7
              Du willst die Anzahl von Inseraten je Kunde zählen und danach sortiert die Daten erhalten?
              Warum gruppierst du dann nicht nach der ID der Kunden?
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                >> Warum gruppierst du dann nicht nach der ID der Kunden?

                da steh ich jetzt auf den Schlach. Ich möchte ja die Kundenliste nach Anzahl der Inserate sortieren.

                Wie erreiche ich diesen Effekt durch Sortierung nach Kunden-ID?

                Falls das ganze so abwegig klingt: Angenommen ich habe 300 registrierte Kunden, wovon 30 noch kein Inserat aufgegeben haben. Dann möchte ich mir diese 100 als erste in der Liste anzeigen lassen, um sie einmal zu kontaktieren.
                [COLOR=darkblue].: 1+1=23 :.[/COLOR]

                Kommentar


                • #9
                  Original geschrieben von syco23
                  >> Warum gruppierst du dann nicht nach der ID der Kunden?
                  da steh ich jetzt auf den Schlach. Ich möchte ja die Kundenliste nach Anzahl der Inserate sortieren.

                  Wie erreiche ich diesen Effekt durch Sortierung nach Kunden-ID?
                  von sortieren war nicht die rede!

                  Falls das ganze so abwegig klingt: Angenommen ich habe 300 registrierte Kunden, wovon 30 noch kein Inserat aufgegeben haben. Dann möchte ich mir diese 100 als erste in der Liste anzeigen lassen, um sie einmal zu kontaktieren.
                  wird nicht besser, sondern noch abwegiger ...

                  300 registrierte kunden, von denen 30 noch kein inserat aufgegeben haben - also welche 100 denn jetzt?


                  könntest du bitte vor dem nächsten post erst mal in ruhe nachdenken, was du jetzt eigentlich willst? danke.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Ist schon gut. Also ich meine natürlich die 30.

                    >> von sortieren war nicht die rede!

                    Gut, dann eben gruppieren - Hauptsache es kommt die gewünschte sortierte Liste am Ende raus..
                    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

                    Kommentar


                    • #11
                      Code:
                      ... order by anzahl asc
                      feddich...

                      Kommentar


                      • #12
                        Das ASC allein wird's wohl nicht gewesen sein:
                        Also ORDER by geht nicht:

                        #1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause
                        Edit: mal versuchen
                        Code:
                        GROUP by .. ORDER by
                        [COLOR=darkblue].: 1+1=23 :.[/COLOR]

                        Kommentar


                        • #13
                          So hat geklappt.

                          Merke: Bei JOINS brauchst du ein GROUP by, dann darfst du auch ein ORDER by anhängen..
                          [COLOR=darkblue].: 1+1=23 :.[/COLOR]

                          Kommentar


                          • #14
                            Original geschrieben von syco23
                            Merke: Bei JOINS brauchst du ein GROUP by, dann darfst du auch ein ORDER by anhängen..
                            Merke 1: Bei JOINs brauchst du kein GROUP BY

                            Merke 2: Bei Abfragen, die zusätzlich zu einer Aggregatfunktion (COUNT, SUM, MAX, MIN, ...) noch weitere Spalten selektieren, brauchst du ein GROUP BY

                            Merke 3: Bei JOINs, die zusätzlich zu einer Aggregatfunktion (COUNT, SUM, MAX, MIN, ...) noch weitere Spalten selektieren, brauchst du ein GROUP BY (analog zu Merke 2)

                            Merke 4: Du hast das mit GROUP BY wohl nochnicht so richtig verstanden
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              na bitte, warum nicht gleich so

                              Und nein, ich hab mich mit JOINs noch nicht viel beschäftigt. Ich wollte eigentlich nie so gut php / sql können, wie ich es jetzt beherrsche. Es fallen halt immer wieder Arbeiten an, die ich gerade noch selbst coden kann und so lerne ich Stück für Stück... (Angefangen hat alles mit header und footer includen vor 2 Jahren )
                              Zuletzt geändert von syco23; 15.06.2005, 01:02.
                              [COLOR=darkblue].: 1+1=23 :.[/COLOR]

                              Kommentar

                              Lädt...
                              X