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

2. Teste folgende SQL-Anweisung:
Select AufNr, Menge, VPreis, (Menge * VPreis) As Gesamtpreis FROM Positionen
Was genau bewirkt diese Anweisung?

3. Teste auch folgende SQL-Anweisung:
Select Positionen.AufNr, Sum(Menge*VPreis) AS Wert FROM Positionen Group By AufNr
Was genau bewirkt diese Anweisung?

4. 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.

5. 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.

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

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

8. Welche Artikel liefert der Lieferant "Leinenweber"?

9. Welche Kunden haben einen Auftrag erteilt?

10. 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:

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

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

12. 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

X

Fehler melden

X

Suche