Probeklausur

sorry, ich meinte 2j
ich verwende varchar(3) weil es doch z.B. bei Kunde K1 heißt und nicht nur 1

Das kommt halt drauf an, wenn Dinge wie Kundennummern auch Buchstaben enthalten sollen, dann ist das okay. Oft aber nimmt man einfach ein SERIAL, also INT, für sowas, da die Kundennummer (oft) keine weitere Information trägt, sondern nur als eindeutiges Unterscheidungsmerkmal dienen soll.
 
Werbung:
---Aufgabe 2e---
SELECT * FROM Artikel WHERE Farbe IN
(SELECT Farbe from Artikel WHERE Farbe >= Farbe )

---Aufgabe 2f---
SELECT * FROM BESTELLUNG WHERE K_NR IN
(SELECT K_NR from BESTELLUNG, GROSSKUNDE WHERE K_NR = K_NR)

---Aufgabe 2h,k---
da weiß ich nicht was ich machen soll

---Aufgabe 2i---
Create View Bestellung AS
SELECT B_NR AS Artikel
FROM Artikel, Gramm
WHERE Gramm<6000
GROUP BY B_NR;
 
---Aufgabe 2e---
SELECT * FROM Artikel WHERE Farbe IN
(SELECT Farbe from Artikel WHERE Farbe >= Farbe )

---Aufgabe 2f---
SELECT * FROM BESTELLUNG WHERE K_NR IN
(SELECT K_NR from BESTELLUNG, GROSSKUNDE WHERE K_NR = K_NR)

---Aufgabe 2h,k---
da weiß ich nicht was ich machen soll

---Aufgabe 2i---
Create View Bestellung AS
SELECT B_NR AS Artikel
FROM Artikel, Gramm
WHERE Gramm<6000
GROUP BY B_NR;

Du hast ja MySQL installiert. Hast Du Deine Selects mal getestet?

Was erwartest Du z.B. beim Subselect

Code:
SELECT Farbe from Artikel WHERE Farbe >= Farbe

und was kommt raus?

Was erwartest Du bei

Code:
SELECT K_NR from BESTELLUNG, GROSSKUNDE WHERE K_NR = K_NR

und was kommt bei raus?
 
zu 2e:
Wiso machst du den Subquery und suchst nicht gleich nach Farbe >= Farbe?

zu 2f:
Sinn? K_NR ist immer gleich K_NR so wie 1 immer gleich 1 ist. Wiso den Join erst im Subquery und nicht direkt?

Beide Abfragen ergeben schonmal keinen Sinn und in beiden arbeitest du mehrmals mit der selben Tabelle was immer nur mit Aliasen funktionieren kann.

2e:
Code:
SELECT    a1.A_Name,
        a1.Farbe
FROM    Artikel a1
WHERE    a1.Farbe IN (    SELECT    a2.Farbe
                        FROM    Artikel a2
                        WHERE    a2.A_Nr != a1.A_Nr )

2f:
Code:
SELECT    k.K_Name
FROM    Großkunde gk
LEFT JOIN Kunde k ON gk.K_Nr = k.K_NR
WHERE    gk.K_Nr NOT IN (    SELECT    K_Nr
                            FROM    Bestellung )

2h:
Auch Aufgabensteller dürfen in Sätzen sprechen.

2k:
Da sind komische Zeichen, was hat Pi damit zu tun?

2i:
Du joinst 2 Tabellen (Gramm ist eigentlich auch keine Tabelle?) ohne eine WHERE Bedingung. Du erhälst ein Kreuzprodukt. Du gibst die B_NR aus die zumindest in der Artikeltabelle nicht enthalten ist und gruppierst danach, was bei einem Schlüsselfeld eher wenig Sinn macht. Was soll das werden?
 
Werbung:
Zurück
Oben