[MYSQL] Where Abfrage auf Count

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

  • [MYSQL] Where Abfrage auf Count

    Hallo,

    leider hat mir das Durchsuchen des Forums bei folgender Frage nicht weiter geholfen.

    Benützte MySQL Version: 3.23.49

    Also ich habe eine Abfrage:

    SELECT uz.uz_id, COUNT( uzs.uzs_id ) AS verfuegbar FROM u_zimmer AS uz
    LEFT JOIN uz_status AS uzs ON uz.uz_id = uzs.uzs_uzid AND uzs.uzs_datum
    BETWEEN '2004-07-20' AND '2004-07-24'
    GROUP BY uz.uz_id, uz.uz_stpreis

    Mit dem Ergebnis:

    uz_id | verfuegbar
    1 | 1
    2 | 0

    Nun möchte ich dass mir nur die Ergebnisse mit einer 0 bei Verfügbar angezeigt wird, leider hilt WHERE verfuegbar = 0 oder COUNT( uzs.uzs_id ) = 0 nicht weiter, bzw. bringt fehler, kann mir jemand helfen?

  • #2
    Re: [MYSQL] Where Abfrage auf Count

    Original geschrieben von aevo
    bringt fehler
    welche?

    hast du WHERE und GROUP BY in der richtigen reihenfolge?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      HAVING?
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        Na also, folgender Befehl funktioniert:

        SELECT uz.uz_id, COUNT( uzs.uzs_id ) AS verfuegbar FROM u_zimmer AS uz
        LEFT JOIN uz_status AS uzs ON uz.uz_id = uzs.uzs_uzid AND uzs.uzs_datum
        BETWEEN '2004-07-20' AND '2004-07-24'
        GROUP BY uzs.uzs_id

        Gibt das Ergebnis:
        uz_id | verfuegbar
        2 | 0
        1 | 1

        Beim Einfügen von "WHERE COUNT( uzs.uzs_id ) = 0" gibt folgenden Fehler:

        MySQL said:

        #1111 - Invalid use of group function

        Bei "HAVING COUNT( uzs.uzs_id ) = 0" gibts den Fehler:

        MySQL said:

        #1064 - You have an error in your SQL syntax near 'GROUP BY uzs.uzs_id LIMIT 0, 30' at line 6


        Was mach ich falsch?

        Kommentar


        • #5
          WHERE verfuegbar = 0
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Zum einen formatier' mal Deine Statements ...

            zum anderen ist WHERE vollkommener Quatsch ... weil das ergebniss von "verfuegbar" per definition zum Zeitpunkt der WHERE-Auswertung noch gar nicht vorliegt ... !

            probier' mal folgendes
            Code:
            SELECT uz.uz_id, COUNT(uzs.uzs_id) verfuegbar
              FROM u_zimmer uz
              LEFT JOIN uz_status uzs
                ON uz.uz_id = uzs.uzs_uzid
               AND uzs.uzs_datum BETWEEN '2004-07-20' AND '2004-07-24'
             GROUP BY uzs.uzs_id
            HAVING verfuegbar > 0
            alternativ:
            Code:
            SELECT uz.uz_id, COUNT(uzs.uzs_id) AS verfuegbar
              FROM u_zimmer uz
              LEFT JOIN uz_status uzs
                ON uz.uz_id = uzs.uzs_uzid
               AND uzs.uzs_datum BETWEEN '2004-07-20' AND '2004-07-24'
             GROUP BY uzs.uzs_id
            HAVING COUNT(uzs.uzs_id) > 0
            Wichtig ist dabei auf jeden Fall die Position der HAVING-Clause hinter der GROUP BY-Clause ... !
            Zuletzt geändert von goth; 19.07.2004, 16:47.
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              danke goth, hab nur das größer als gegen ein gleich tauschen müssen und schon hats sehr schön funktioniert! herzlichen dank!

              Kommentar


              • #8
                Bitte schön ...
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar

                Lädt...
                X