Avatar billede wired Nybegynder
22. september 2002 - 14:50 Der er 11 kommentarer og
1 løsning

Nemme points ?

Jeg har en tabel med bøger og en tabel med personer, samt en tabel over hvem som har læst hvilke bøger.

Nu vil jeg gerne vha kun EN FORSPØRGELSE kunne udvælge en person (under kriterier) og derefter få en oversigt over de bøger som personen IKKE har læst endnu.

Personer: ID, persnr
Bøger: ID, Bognr, titel
Kryds: Persnr, bognr
Avatar billede nybegynderen Nybegynder
22. september 2002 - 15:05 #1
Du kan evt. sende DBén til mig, så vil jeg godt prøve at kigge på det !
Avatar billede nih Novice
22. september 2002 - 15:59 #2
SELECT bøger.*, Kryds.*
FROM bøger LEFT JOIN Kryds ON bøger.bognr = Kryds.bognr
WHERE (Kryds.Persnr =[indtast persNr]) AND (Kryds.bognr Is Null)

Prøv den her

Niels
Avatar billede nih Novice
22. september 2002 - 16:04 #3
De id'er i personer og bøger - er det dem der er fremmednøgler i kryds ?????

SELECT bøger.*, Kryds.*
FROM bøger LEFT JOIN Kryds ON bøger.Id = Kryds.bognr
WHERE (Kryds.Persnr =[indtast persNr]) AND (Kryds.bognr Is Null)

Ellers skal du joine på Id
Avatar billede nih Novice
22. september 2002 - 16:21 #4
SELECT *
FROM bøger
WHERE bognr Not In (
    SELECT Kryds.bognr
    FROM Kryds LEFT JOIN personer ON Kryds.persNr = personer.persNr
    WHERE personer.persNr=[indtast]);

Du kan også prøve en indlejret SQL
Avatar billede wired Nybegynder
22. september 2002 - 16:41 #5
Hi Niels
Jeg har prøvet de to øverste i de giver ikke det ønskede resultat.
Det sidste eksempel syntes ikke at virke...
Avatar billede nih Novice
22. september 2002 - 16:54 #6
SELECT Kryds.bognr
    FROM Kryds LEFT JOIN personer ON Kryds.persNr = personer.persNr
    WHERE personer.persNr=[indtast];

Den her burde give de bognr som vedkommende har læst.

når du har fået den til at virke, skal du lave en ny foresp med tabellen bøger, og 'paster' den indlejrede foresp ind med kritteriet 'Not In (SQL)

Som vist 22/09-2002 15:59:26 - Tjek for stavefejl og om du joiner de rigtige felter og om felttyperne er ens.
Avatar billede wired Nybegynder
22. september 2002 - 17:36 #7
Jeg tror ikke at Access kan forstå "not in" jeg tror det hedder "Not exists" Selv om den heller ikke er alt for glad for det.
Jeg checker lidt omkring
Avatar billede wired Nybegynder
22. september 2002 - 17:58 #8
Dette viser kun en enkelt book som ingen har læst og ikke dem som PersonNr=1 Ikke har læst.

SELECT BookNr
FROM Books
WHERE Books.BookNr=Not Exists (SELECT DISTINCT Books.BookNr
FROM Books LEFT JOIN CrossS ON Books.BookNr = CrossS.BookNr
WHERE CrossS.PersonNr=1
ORDER BY Books.BookNr)
Avatar billede nih Novice
22. september 2002 - 18:06 #9
'NOT IN' virker i Access (jet dbengine)

Virker den her:
SELECT Kryds.bognr
FROM Kryds LEFT JOIN personer ON Kryds.persNr = personer.persNr
WHERE personer.persNr=[indtast];

Jeg er sikker på at det er den indlejrede SQL med tabellen kryds og personer det er galt med.

Niels
Avatar billede terry Ekspert
17. oktober 2002 - 19:50 #10
and these were "nemme points" :o)
Avatar billede nih Novice
17. oktober 2002 - 20:28 #11
Hi Terry

Well - Jeg er nu ligeglad, med points, men det var mit bud på en løsning. En skam den ikke kunne bruges.

Niels
Avatar billede wired Nybegynder
17. januar 2003 - 21:05 #12
Tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester