Announcement

Collapse
No announcement yet.

Was macht diese Query?

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

  • Was macht diese Query?

    Hallo zusammen

    Ich soll eine Query benutzen, die so aussieht:

    SELECT Count(id)
    FROM tbl1
    WHERE id IN ( 2, 3, 5 )
    GROUP BY name1
    HAVING Count(id) = 3;

    Also ich weiss, dass es darum geht, abzufragen ob in bestimmten Reihen ein Feld gleich ist, aber wie funktioniert es genau?
    Danke lg

  • #2
    Was spricht dagegen, sie auszuprobieren und sich das Ergebnis anzuschauen?


    Christian

    Comment


    • #3
      Gar nichts. Hab ich auch schon gemacht, aber ich bin leider nicht schlau daraus geworden. Ich bin ein ziemlich planloser Anfänger in SQL.

      Comment


      • #4
        Count(id) -> zähle diese Spalte
        id IN ( 2, 3, 5 ) ->Wenn id 2 oder 3 oder 5 ist
        GROUP BY name1 -> Die Daten werden nach dieser Spalte gruppiert
        HAVING Count(id) = 3 -> nur wenn die Zählung der ids nach der o.a. Gruppierung 3 ergibt
        Christian

        Comment


        • #5
          Das hat sehr geholfen, danke.

          Comment


          • #6
            Die Query ist in der freien Wildbahn etwas ungewöhnlich, aber total legitim. Um den Vorschlag von Christian abzurunden:
            Baue die Spalte name1 in die Ausgabe ein >
            Code:
            SELECT name1, Count(id)
              FROM tbl1
             WHERE id IN ( 2, 3, 5 )
             GROUP BY name1
            HAVING Count(id) = 3;
            Nun siehst Du, was das Group By "macht". Da nun mehrere Zeilen und nicht mehr die Gesamtzahl ausgegeben werden, muss man selbst zusammen rechnen.

            Lasse alles inklusive und nach "Having ..." weg, die gezählten Gruppen werden nun nicht mehr eingeschränkt.

            Ändere bei "Where ID in (...)" die Werte .., was geschieht ?

            Lasse Dir alle überhaupt vorkommenden ID ausgeben mit "select distinct id from tbl1", ändere das Statement links, um festzustellen, ob ID doppelt vorkommen. Und damit schließt sich dann der Kreis langsam wieder.

            usw. usf.

            Es beisst nicht!

            Falls Du nicht ein neues mysql 8 einsetzt kann ich nur sagen, dass es als Anfänger etwas brenzlig zum Üben ist, da gern Schrott* ausgegeben wird, wenn die Group by clause verwendet wird. Falls dir das wichtig erscheint, google das oder nimm ein anderes System wie z.B. PostgreSQL, Firebird, Oracle DB, MS SQL (wie das genau bei Maria Db ist, weiß ich nicht)

            *Man kann den Schrott in der Konfiguration abschalten oder es ist bei neuen Systemen per Default abgeschaltet und man erhält dann statt Schrottdaten einen "ordentlichen" Syntaxfehler.

            Comment

            Working...
            X