Announcement

Collapse
No announcement yet.

Minimum von gezählten Werten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Minimum von gezählten Werten

    Hallo,

    ich habe zur Zeit folgendes Problem. Ich habe in der Datenbank Gäste die Buchungen haben und ich möchte nun die minimale Anzahl von gebuchten Nächten eines Jahres haben.
    Ich habe es schon soweit, dass die Gäste gezählt werden, allerdings kann ich davon nicht das Minimum berechnen.
    Ich bekomme dann folgende Fehlermeldung :
    #1111 - Invalid use of group function

    Mein Statement bisher lautet:
    Code:
    SELECT MIN(COUNT(*))
    			  FROM Gast g, Buchung b
    			  WHERE (g.Gast_ID = b.Gast_ID) AND
    			        (YEAR(b.Startdatum) BETWEEN 1990 AND YEAR(CURDATE()))			        
    			  GROUP BY YEAR(b.Startdatum);
    Gruß
    Daniel
    Zuletzt editiert von Grinarn; 13.01.2010, 11:43.

  • #2
    Min und Count kann man so nicht zusammen verwenden. Zuerst berechnest du dir die Anzahl der Buchungen pro jahr und dann schaust du welche davon das Minimum sind. Ich sehe auch keinen Grund die Gästetabelle da mit rein zu ziehen. Brauchst Du ja für nichts.

    [highlight=sql]
    SELECT MIN(YearCount.Anzahl) as MinAnzahl, YearCount.Year as Year
    FROM
    (
    SELECT COUNT(*) as Anzahl, Year
    FROM Buchung
    WHERE YEAR(Startdatum) BETWEEN 1990 AND YEAR(CURDATE())
    GROUP BY YEAR(StartDatum)
    ) as YearCount
    GROUP BY YearCount.Year
    [/highlight]

    Comment


    • #3
      Hallo,
      Originally posted by Grinarn View Post
      ...ich möchte nun die minimale Anzahl von gebuchten Nächten eines Jahres haben.
      Da solltest du mal noch den Aufbau deiner Buchungstabelle verraten. Ansonsten kann dir hier keiner helfen. Die Lösung von fanderlf ist weder syntaktisch (im GROUP BY müssen alle Felder aus der Select-Liste aufgeführt sein, die nicht aggregiert sind) richtig, noch passt sie zur Problemstellung. Die Anzahl der gebuchten Tage ist ja wohl nicht die Anzahl der Buchungen oder doch?

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Originally posted by Falk Prüfer View Post
        .....
        Die Lösung von fanderlf ist weder syntaktisch (im GROUP BY müssen alle Felder aus der Select-Liste aufgeführt sein, die nicht aggregiert sind) richtig
        ....
        Gruß Falk

        Hallo Falk,

        Vielleicht gucke ich grade falsch, ich kann aber keinen Fehler entdecken ?


        Gruss

        Comment


        • #5
          Originally posted by dbwizard View Post
          ...
          Vielleicht gucke ich grade falsch, ich kann aber keinen Fehler entdecken ?
          [highlight=sql]
          ...
          SELECT COUNT(*) AS Anzahl, Year
          FROM Buchung
          WHERE YEAR(Startdatum) BETWEEN 1990 AND YEAR(CURDATE())
          GROUP BY YEAR(StartDatum) <== das Startdatum steht nicht im Select, dafür fehlt das Feld year
          ...
          [/highlight]

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Originally posted by Falk Prüfer View Post
            [highlight=sql]
            <== das Startdatum steht nicht im Select, dafür fehlt das Feld year
            ...
            [/highlight]

            Gruß Falk
            ..ehemm...Stimmt...habe nur den äusseren genauer angeschaut :-)


            Gruss

            Comment

            Working...
            X