Announcement

Collapse
No announcement yet.

Hilfe bei einer Abfrage

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

  • Hilfe bei einer Abfrage

    Hallo, bin gerade dabei mich auf meine prüfung vorzubereiten. Bin gerade dabei SQL zu lernen.
    Habe folgende frage, ich soll ein SQL Abfrage erstellen mit der alle IDs der Veranstaltung in der Location "Fischfabrik HH" absteigend nach Datum sortiert ausgegeben werden.

    Meine Tabellen:
    Tabelle Veranstaltung: Veranstaltungs_ID, Datum, LocationID
    Tabelle Locaion: Location_ID, Location_Name

    Mein SQL:
    Select Location_ID as L_ID
    FROM Location
    WHERE Location_Name = "Fischmarkt HH"
    AND
    SELECT Veranstltungs_ID
    FROM Veranstaltung
    WHERE LocationID = L_ID

    Frage 1, ist das so überhaupt möglich?
    Frage 2, kann man das irgendwie leichter schreiben mit Join oder so?

    Danke schon mal für eure Hilfe

  • #2
    Frage 1, ist das so überhaupt möglich?
    Nein, syntaktisch (und logisch) völligst daneben.

    Frage 2, kann man das irgendwie leichter schreiben mit Join oder so?
    Nicht nur kann, sondern du musst hierfür JOIN einsetzen, also JOINs lernen ist angesagt.
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment


    • #3
      Originally posted by dibo33 View Post
      Nein, syntaktisch (und logisch) völligst daneben.


      Nicht nur kann, sondern du musst hierfür JOIN einsetzen, also JOINs lernen ist angesagt.
      Alles klar. Kannst Du mir mal für die Aufgabe das SQL angeben?

      Comment


      • #4
        Simpler INNER-JOIN, den bekommst du auch alleine hin.
        http://www.sql-und-xml.de/sql-tutori...-mit-join.html
        Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

        Comment


        • #5
          So?
          SELECT Veranstaltungs_ID
          FROM Veranstaltung v
          INNER JOIN Location l
          ON v.LocationID = l.LocationID
          wehere l.Location_Name = "Fischmarkt HH"

          Comment


          • #6
            Sieht doch nicht schlecht aus (INNER musst du nicht angeben, also einfach nur JOIN).

            absteigend nach Datum sortiert ausgegeben werden.
            Das baust du jetzt auch noch ein.


            UND WHERE auch noch richtig schreiben.
            Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

            Comment


            • #7
              Okay alles klar danke. Hatte wohl am Anfang den Denkfehler weil ich ja die ID aus der anderen Tabelle mit dem Namen suchen musste, a ber ist doch nicht so schwer wieich dachte

              Comment


              • #8
                Habe ne weitere Aufgabe: Erdtellen Sie eine SQL-Abfrage mit der die Anzahl der Open-Air Veranstaltungen im Monat Juni 2009 ausgegeben werden

                Lösung:
                SELECT SUM(VeranstaltungsID) FROM Veranstaltung v
                JOIN Veranstaltungsart va
                ON v.VeranstaltungsartID = va.VeranstaltungsartID
                WHERE va.Beschreibung = "Open-Air" AND v.Datum like "Juni 2009"

                Habe die Tabellen Veranstaltung und Veranstaltungsort
                Tabelle Veranstaltung enthält die Felder Datum, VeranstaltungsID und VeranstaltungsartID
                Tabelle Veranstaltungsart enthält die Felder VeranstaltungsartID und Beschreibung

                Comment


                • #9
                  Anzahl => COUNT()

                  v.Datum like "Juni 2009"
                  1. LIKE ohne Platzhalter macht keinen Sinn.
                  2. in welchen perversen Datenformat ist denn deine Datumspalte?
                  http://dev.mysql.com/doc/refman/5.5/...functions.html
                  Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

                  Comment


                  • #10
                    Originally posted by dibo33 View Post
                    Anzahl => COUNT()


                    1. LIKE ohne Platzhalter macht keinen Sinn.
                    2. in welchen perversen Datenformat ist denn deine Datumspalte?
                    http://dev.mysql.com/doc/refman/5.5/...functions.html
                    Also So?

                    SELECT COUNT(VeranstaltungsID) FROM Veranstaltung v
                    JOIN Veranstaltungsart va
                    ON v.VeranstaltungsartID = va.VeranstaltungsartID
                    WHERE va.Beschreibung = "Open-Air" AND v.Datum like "%.06.2009"


                    Welches Dateiformat die Datumsspalte hat, hab ich ka das ist ne IHK Aufgabe da ist nur die Tabelle abgebildet aber nicht wie das Datum gespewichert wird.

                    Comment


                    • #11
                      aber nicht wie das Datum gespewichert wird.
                      Dann schaue nach in welchen Format üblicherweise Daten gespeichert werden.


                      AND v.Datum like "%.06.2009"
                      Nicht umsonst habe ich auf die Datum-/Timefunktionen hingewiesen, vergleiche Jahr und Monat getrennt.
                      Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

                      Comment


                      • #12
                        Originally posted by dibo33 View Post
                        Dann schaue nach in welchen Format üblicherweise Daten gespeichert werden.




                        Nicht umsonst habe ich auf die Datum-/Timefunktionen hingewiesen, vergleiche Jahr und Monat getrennt.
                        alles klar aber sonst ist die abfrage richig oder?

                        Comment


                        • #13
                          vom Prinzip her, ja
                          Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

                          Comment


                          • #14
                            Noch eine kurze Anmerkung.

                            Halte dich bei der Prüfung an Standard-SQL und setze kein Dialekt ein, deshalb solltest du bspw. bei Alias-Bezeichner das optionale AS immer mit angeben.

                            Ob du jetzt auch explizit INNER bei INNER-JOINs angeben musst, k.A.
                            Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

                            Comment


                            • #15
                              Originally posted by dibo33 View Post
                              Noch eine kurze Anmerkung.

                              Halte dich bei der Prüfung an Standard-SQL und setze kein Dialekt ein, deshalb solltest du bspw. bei Alias-Bezeichner das optionale AS immer mit angeben.

                              Ob du jetzt auch explizit INNER bei INNER-JOINs angeben musst, k.A.
                              Alles klar vielen Dank!

                              Habe noch ne weitere Aufgabe:
                              Erstellen Sie eine SQL-Anweisung. mit der die Anzahl der bereit belegten Plätze für alle Veranstaltungen ausgegebe wird.
                              Die Tabellen Locaion_Sitze und Tabelle Belegung sind vorhanden.
                              Tabelle Location Sitze hat folgende Felder: LfdNr, LocationID, Kategorie, Sitznummer
                              Tabelle Belegung BelegungID, Location_Sitzt_LfdNr, VeranstaltungID


                              [highlight=sql]SELECT COUNT(Sitznummer)
                              FROM Location_Sitze AS ls
                              INNER JOIN Belegung AS b
                              ON ls.LfdNr = b.Location_Sitze_LfdNr
                              WHERE b.Location_Sitze_LfdNr NOT NULL[/highlight]


                              Ich bin mir nicht sicher ob das so richtig ist, wüsste aber sonst nicht wie ich das mit der WHERE-Klause machen sollte oder ob überhaupt eine WHERE-Klause nötig ist

                              Ne weitere Aufgabe die mir noch Schwierigkeiten bereitet ist diese:
                              Erstellen Sie eine SQL-Anweisung, mit der die Anzahl der Veranstaltungen pro Location_Name und dem zugehörigern Location_Name ausgegeben wird.
                              Tabelle Location:LocationID, LocationTypID, Location_Name
                              Tabelle Veranstaltiung: VeranstaltungsID, VeranstaltungsartID,LocationID,Datum,Uhrzeit

                              Mein SQL:
                              [highlight=sql]SELECT COUNT(LocationID), Location_Name
                              FROM Location AS l
                              INNER JOIN Veranstaltung AS v
                              ON l.LocationID = v.LocationID[/highlight]

                              Oder habe ich die Frage falsch verstanden?
                              Zuletzt editiert von Pillemon; 28.04.2010, 08:40.

                              Comment

                              Working...
                              X