Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Ein mir rätselhafter Syntax-Error

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Ein mir rätselhafter Syntax-Error

    Folgender Query will nicht, warum?
    Code:
    SELECT COUNT(Links.catid) AS Anzahl,LinkCats.* GROUP BY LinkCats.id ORDER BY Anzahl ASC


  • #2
    Wenn du das Ganze nur zählen willst, wieso benutzt du dann noch GROUP BY LinkCats.id ORDER BY Anzahl ASC??
    Wenn du COUNT(Links.catid) machst, dann kannst du auch nur ein alias vergeben und nicht zwei. Oder??
    Wieso hängst du hier noch ,LinkCats.* dran??

    Kommentar


    • #3
      Wie soll dieser Query bitte funktionieren, wenn er nicht vollständig ist? Wo ist das "FROM tabellenname"??

      Beispiel:

      SELECT feld1, feld2, feld3 FROM tabelle WHERE bedingung1 GROUP BY feld1 ORDER BY feld2 DESC

      Kommentar


      • #4
        Ausserdem - neben dem fehlenden FROM-Teil - wenn du Gruppen-Funktionen verwendest, müssen logischerweise alle neben der Funktion ausgegebenen Felder auch in der GROUP BY-Klausel vorhanden sein.
        Gruss
        L

        Kommentar


        • #5
          Zitat von lazydog
          Ausserdem - neben dem fehlenden FROM-Teil - wenn du Gruppen-Funktionen verwendest, müssen logischerweise alle neben der Funktion ausgegebenen Felder auch in der GROUP BY-Klausel vorhanden sein.
          Wenn du damit meinst:

          Code:
          SELECT feld1, feld2, feld3 FROM tabelle GROUP BY feld1, feld2, feld3
          dann ist das falsch ^^

          Code:
          SELECT feld1, feld2, feld3 FROM tabelle GROUP BY feld1
          ist auch richtig ^^

          Kommentar


          • #6
            Zitat von MrNiceGuy
            Wenn du damit meinst:

            Code:
            SELECT feld1, feld2, feld3 FROM tabelle GROUP BY feld1, feld2, feld3
            dann ist das falsch ^^
            Code:
            SELECT feld1, feld2, feld3 FROM tabelle GROUP BY feld1
            ist auch richtig ^^
            Wo ist den da die Gruppen-Funktion??
            Code:
            SELECT count(*), feld1, feld2, feld3 FROM tabelle GROUP BY feld1
            funktioniert ganz sicher nicht!
            Gruss
            L

            Kommentar


            • #7
              Zitat von lazydog
              Code:
              SELECT count(*), feld1, feld2, feld3 FROM tabelle GROUP BY feld1
              funktioniert ganz sicher nicht!
              Ach nein? Hmm... Komisch, bei mir funktioniert es

              Kommentar


              • #8
                OK, da schient MySQL einen Fehler zu haben. Sinn macht diese Ausgabe ja nicht, oder hast du tatsächlich 5 Einträge mit der UID 2?
                Gruss
                L

                Kommentar


                • #9
                  Zitat von lazydog
                  OK, da schient MySQL einen Fehler zu haben. Sinn macht diese Ausgabe ja nicht, oder hast du tatsächlich 5 Einträge mit der UID 2?
                  Nein, schau dir die Abfrage an, das GROUP BY bezieht sich auf die Spalte link_url ^^

                  Kommentar


                  • #10
                    Eben darum ist die Angabe der UID ein völliger Blödsinn. Welche UID zur den 5 URL's wird denn angezeigt?
                    Gruss
                    L

                    Kommentar


                    • #11
                      Zitat von lazydog
                      Eben darum ist die Angabe der UID ein völliger Blödsinn. Welche UID zur den 5 URL's wird denn angezeigt?
                      Die erste, die er zurückgeliefert bekommt, wie es bei GROUP BY mit jedem anderen Feld ist.

                      Kommentar


                      • #12
                        Waaa, was hab ich denn damals für einen Unsinn gepostet, sry.
                        Naja, mittlerweile sieht der Query so aus:
                        Code:
                        SELECT Links.catid,COUNT(Links.catid) AS Anzahl,LinkCats.*
                                      FROM Links,LinkCats
                                      GROUP BY LinkCats.id ORDER BY Anzahl DESC
                        Also das ganze soll folgendes machen:
                        Aus der Tabelle LinkCats sollen nach der Linkanzahl sortiert, die Werte selektiert werden. Die Linkanzahl ergibt sich aus den Einträgen der Table Links. Ein Link wird durch die Spalte catid einer Kategorie zugeordnet.
                        Äh, nunja, obiges funktioniert nicht. :/
                        Anzahl ist immer die Gesamtanzahl aller Links und nicht die Anzahl der Links mit einer bestimmten catid.
                        Ein ähnliches Konstrukt gibt mir jedoch die catids in richtiger Reihenfolge, wie ich sie haben will, wieder:
                        Code:
                        SELECT catid, COUNT(catid)  AS Anzahl FROM Links GROUP  BY catid ORDER  BY Anzahl DESC
                        Da fehlen mir aber halt die Daten der Tabelle LinkCats.
                        Ich würde aber doch gerne alles in einem Query erledigen und nicht erst die IDs mir holen und dann für jede eine weitere Abfrage machen.

                        Kommentar

                        Lädt...
                        X