i

Datenbankabfragen: SQL

SQL

Hier die Zusammenfassung der SQL-Syntax:


Aufgaben

1. Löse nun bitte alle Aufgaben der vorherigen Seiten (SELECTION und PROJEKTION) in der SQL – Notation

  1. Teste folgende SQL-Anweisung:

    Select AufNr, Menge, VPreis, (Menge * VPreis) As Gesamtpreis FROM Positionen

    Was genau bewirkt diese Anweisung?


  2. Teste auch folgende SQL-Anweisung:

    Select Positionen.AufNr, Sum(Menge*VPreis) AS Wert
    FROM Positionen Group By AufNr


    Was genau bewirkt diese Anweisung?


  3. Erzeuge eine Liste mit den Aufträgen, in denen der Wert der Bestellung 1.000,- überschreitet. Die Liste ist absteigend nach dem errechneten Auftragswert sortiert. (Tipp: Das geht ganz gut mit dem Having-Zusatz!)



    4a) Erweiterung zu 4: Es sind nur Auftragsnummern zu berücksichtigen, die kleiner als 9104 sind.


  4. Ermittlung des niedrigste, des durchschnittlichen und des höchsten Auftragswerts aller Auftragspositionen.

    Das Beispiel könnte in einem 2. Schritt so modifiziert werden, dass nur die Auftragspositionen ab der Auftragsnummer 9103 berücksichtigt werden.


  5. Welche Mengen wurden insgesamt von jedem einzelnen Artikel bestellt (Sortierung: aufsteigend nach Artikelnummern)?


  6. Welche Kunden wohnen in Bitburg, Neuerburg oder Saarbrücken? (Mit IN-Operator)


  7. Welche Artikel liefert der Lieferant "Leinenweber"?

  8. Welche Kunden haben einen Auftrag erteilt?


  9. Welche Kunden haben den Artikel Toga bestellt?

    Hier gibt es einen Tipp:


    Select * From Kunden

    Where KNr In

    (Select KNr From Auftrag......



    Die dahinter stehende Logik:

  10. Tabelle Artikel: ANr für Toga suchen (40430)
  11. Tabelle Position: Alle Positionen mit ANr = 40430: AufNr suchen (9101, 9102, 9106)
  12. Tabelle Auftrag: KNr mit AufNr 9101, 9102, 9106: KNr finden (1203, 1205, 1201)
  13. Tabelle Kunden: Kundendaten dieser KNr


  14. Welche Kunden haben den Artikel Toga bestellt und erhalten?


  15. Teste folgende Abfrage (Kreuzprodukt):

    Select * from Kunden, Auftrag


    Das Ergebnis verwirrt vielleicht zunächst, hier ist offensichtlich etwas passiert, was in der Praxis normalerweise wenig Sinn macht (was?).
    In

Kapitel 1.4.1.2.6
Fachkonzept - SQL-Join findest du einen Hinweis.



12a. Eine "vernünftige" Lösung, erkläre sie bitte:


Select
From Kunden, Auftrag Where Kunden.KNr = Auftrag.KNr



oder:


Select

From Kunden Inner Join Auftrag On Kunden.KNr = Auftrag.KNr



Und wieder ein Tipp: Der dahinter stehende Algorithmus:


Für jedes Tupel tp1 aus Kunden

Für jedes Tupel tp2 aus Auftrag

       Wenn Kunden.KNr = Auftrag.KNr

            Füge das aus Kunden und Auftrag

            kombinierte Tupel in die Ergebnistabelle ein

Hinweis: Hier sollten noch mit Hilfe der Projektion spezielle Spalten ausgewählt werden!



Quellen

Suche

v
11.2.5
www.inf-schule.de/vernetzung/dbbetrieblich/db-sql

Rückmeldung geben