Eine Aufgabe Select und verschachtelt

ARENA

Neuer Benutzer
Beiträge
4
es handelt sich um Folgendes:

1. Gegeben sind die folgenden drei Tabellen:

CREATE TABLE KUNDE

( K_ID INT(11),

NAME VARCHAR(50),

VORNAME VARCHAR(50),

WOHNORT VARCHAR(50),

CONSTRAINT PK_KUNDE PRIMARY KEY (K_ID));

________________________________________________

CREATE TABLE PRODUKT

( P_ID INT(11),

BEZEICHNUNG VARCHAR(50),

PREIS INT(11),

CONSTRAINT PK_PRODUKT PRIMARY KEY (P_ID));

______________________________________________

CREATE TABLE BESTELLUNG

( B_ID INT(11),

K_ID INT(11),

P_ID INT(11),

DATUM DATE,

MENGE INT(11),

CONSTRAINT FK_BESKUN FOREIGN KEY (K_ID)

REFERENCES KUNDE (K_ID),

CONSTRAINT FK_BESPRD FOREIGN KEY (P_ID)

REFERENCES PRODUKT (P_ID));


die fragen siund folgende:


i. Bitte schreibe ein SQL-Statement, welches alle Kunden ermittelt, die exakt zwei

Bestellungen aufgegeben haben.

j. Bitte schreibe ein SQL-Statement, welches alle Produkte ermittelt, die von einem oder

mehreren Kunden mehr als einmal bestellt wurden. → versuch GROUP BY und HAVING


Meine Versuche:
-- i .--
SELECT KUNDE.K_ID, COUNT( * ) FROM KUNDE, BESTELLUNG
WHERE KUNDE.K_ID=BESTELLUNG.K_ID
-- GROUP BY KUNDE.K_ID
GROUP BY BESTELLUNG.K_ID
HAVING COUNT(BESTELLUNG.K_ID) = 2;
-- j mit exists --
SELECT *
FROM KUNDE,PRODUKT
WHERE EXISTS
(
SELECT * FROM BESTELLUNG AS b
WHERE KUNDE.K_ID = b.K_ID
AND b.P_ID = PRODUKT.P_ID
)
 
Werbung:
Ist das hier der Hausaufgabenservice? Falls ja, erkunde was rot13 ist. Bis dahin als ungeprüfter Schnellschuß:

Code:
grfg=*# perngr gnoyr xhaqr( x_vq vag cevznel xrl, anzr grkg);
PERNGR GNOYR
grfg=*# perngr gnoyr cebqhxg (c_vq vag cevznel xrl, ormrvpuahat grkg);
PERNGR GNOYR
grfg=*# perngr gnoyr orfgryyhat (o_vq vag cevznel xrl, x_vq vag ersreraprf xhaqr, c_vq vag ersreraprf cebqhxg);
PERNGR GNOYR
grfg=*# fryrpg x.anzr sebz orfgryyhat o yrsg wbva xhaqr x ba o.x_vq=x.x_vq tebhc ol x.anzr univat pbhag(o.*) = 2;
 anzr
------
(0 ebjf)
grfg=*# fryrpg c.ormrvpuahat, pbhag(x.anzr) sebz orfgryyhat o yrsg wbva cebqhxg c ba o.c_vq=c.c_vq yrsg wbva xhaqr x ba o.x_vq=x.x_vq tebhc ol c.ormrvpuahat univat pbhag(x.*) > 1;
 ormrvpuahat | pbhag
-------------+-------
(0 ebjf)
 
bei Passierschen A39 wurde der A38 ausgegeen
Die Formulare sind alle ausgefüllt

Immerhin habe ich Vorarbeit geleistet bei j hänge ich irgendwie fest.
COUNT muss ich da noch einbauen
SELECT * FROM PRODUKT, KUNDE JOIN BESTELLUNG ON BESTELLUNG.K_ID = KUNDE.K_ID;

SELECT * FROM PRODUKT WHERE BESTELLUNG.K_ID = KUNDE.K_ID;
 
Keiner eine Ahnung wie ich das anders machen kann? ausser mit Passierschein A38 dort wurtd ich immer abgelejht und sollte das gelbe Formular aus Zimmer 599 in 6.OG ausfüllen
 
Werbung:
Zurück
Oben