Ik heb een probleem met SQL queries.
Ik heb een database met de volgende tabellen
---------------------------------------------
create table KlantGeg
(Sofinummer character (9) NOT NULL,
Naam varchar(30) NOT NULL,
Huisnr varchar(6) NOT NULL,
Postcode char(6) NOT NULL,
Telefoonnummer char(10),
Leeftijd char(3),
PRIMARY KEY (Sofinummer),
FOREIGN KEY (Postcode) REFERENCES Locatie(Postcode) );
create table Boeken
(ISBNnr char(10) NOT NULL,
Titel varchar(100) NOT NULL,
PRIMARY KEY (ISBNnr) );
create table BoekUitleen
(Plaatsnr integer NOT NULL,
Uitleendatum date NOT NULL,
ISBNnr char(10) NOT NULL,
PRIMARY KEY (Plaatsnr),
FOREIGN KEY (ISBNnr) REFERENCES Boeken(ISBNnr) );
create table KoppelTabel
(Sofinummer character (9) NOT NULL,
Plaatsnr integer NOT NULL,
FOREIGN KEY (Plaatsnr) REFERENCES BoekUitleen(Plaatsnr),
FOREIGN KEY (Sofinummer) REFERENCES KlantGeg(Sofinummer) );
----------------------------------------------
nu wil ik een sql query uitvoeren voor een klant die alle boeken heeft uitgeleend. Ik heb al verschillende query's geprobeerd waaronder de onderstaande :
----------------------------------------------
Select KlantGeg.Naam
From KlantGeg, Koppeltabel
Where KlantGeg.Sofinummer = Koppeltabel.sofinummer
and exists (
select Koppeltabel.Plaatsnr
from Koppeltabel, Boekuitleen
where Boekuitleen.plaatsnr = Koppeltabel.plaatsnr
and exists (
select boekuitleen.isbnnr
from BoekUitleen, Koppeltabel
where Boekuitleen.Plaatsnr = Koppeltabel.plaatsnr
and exists (
select Boeken.Isbnnr
from Boeken, Boekuitleen
where Boeken.Isbnnr = Boekuitleen.isbnnr
)))
Group by KlantGeg.Naam;
-----------------------------------
Deze query geeft echter alle klanten die gewoon boeken hebben uitgeleend. Heeft iemand er hier verstand van? Ik heb alle mogelijkheden volgens mij geprobeerd maar het lukt me echt niet.
excuus voor de rare titel
Ik heb een database met de volgende tabellen
---------------------------------------------
create table KlantGeg
(Sofinummer character (9) NOT NULL,
Naam varchar(30) NOT NULL,
Huisnr varchar(6) NOT NULL,
Postcode char(6) NOT NULL,
Telefoonnummer char(10),
Leeftijd char(3),
PRIMARY KEY (Sofinummer),
FOREIGN KEY (Postcode) REFERENCES Locatie(Postcode) );
create table Boeken
(ISBNnr char(10) NOT NULL,
Titel varchar(100) NOT NULL,
PRIMARY KEY (ISBNnr) );
create table BoekUitleen
(Plaatsnr integer NOT NULL,
Uitleendatum date NOT NULL,
ISBNnr char(10) NOT NULL,
PRIMARY KEY (Plaatsnr),
FOREIGN KEY (ISBNnr) REFERENCES Boeken(ISBNnr) );
create table KoppelTabel
(Sofinummer character (9) NOT NULL,
Plaatsnr integer NOT NULL,
FOREIGN KEY (Plaatsnr) REFERENCES BoekUitleen(Plaatsnr),
FOREIGN KEY (Sofinummer) REFERENCES KlantGeg(Sofinummer) );
----------------------------------------------
nu wil ik een sql query uitvoeren voor een klant die alle boeken heeft uitgeleend. Ik heb al verschillende query's geprobeerd waaronder de onderstaande :
----------------------------------------------
Select KlantGeg.Naam
From KlantGeg, Koppeltabel
Where KlantGeg.Sofinummer = Koppeltabel.sofinummer
and exists (
select Koppeltabel.Plaatsnr
from Koppeltabel, Boekuitleen
where Boekuitleen.plaatsnr = Koppeltabel.plaatsnr
and exists (
select boekuitleen.isbnnr
from BoekUitleen, Koppeltabel
where Boekuitleen.Plaatsnr = Koppeltabel.plaatsnr
and exists (
select Boeken.Isbnnr
from Boeken, Boekuitleen
where Boeken.Isbnnr = Boekuitleen.isbnnr
)))
Group by KlantGeg.Naam;
-----------------------------------
Deze query geeft echter alle klanten die gewoon boeken hebben uitgeleend. Heeft iemand er hier verstand van? Ik heb alle mogelijkheden volgens mij geprobeerd maar het lukt me echt niet.
excuus voor de rare titel
[ Voor 1% gewijzigd door loodgieter op 22-01-2004 14:10 . Reden: titel ]