Avatar billede kev. Nybegynder
15. juni 2006 - 11:04 Der er 8 kommentarer og
1 løsning

Finde data, hvor poster ikke eksisterer

Hejsa,

Jeg ved ikke, om overskriften lyder kryptisk, men problemet er følgende:

- Jeg har en tabel med produkter.
- Jeg har en tilhørende tabel med billeder (da der sagtens kan være flere billeder til ét produkt).
- Tabellerne er selvfølgelig linket, så produkter.ID = billeder.produktID

Situationen er dog:

Jeg skal bruge et udtræk på alle de produkter, hvor der IKKE er nogle billeder tilknyttet. Altså: produktID'er for hvilke der ingen poster er i billeder-tabellen.

Nogen, der har en idé om, hvordan jeg skal skrive den SQL-sætning? Eller i det hele taget løse problemet?

// Kevin
Avatar billede nielle Nybegynder
15. juni 2006 - 11:15 #1
SELECT * FROM produktTabel WHERE id NOT IN (SELECT DISTINCT produktID FROM billeder)
Avatar billede kim_falkner Nybegynder
15. juni 2006 - 11:17 #2
eller

SELECT * FROM produktTabel WHERE not exists (SELECT ID FROM billeder where produkttabel.id =BILLEDER.ID)
Avatar billede kev. Nybegynder
15. juni 2006 - 11:19 #3
Er det virkelig alt? Skal jeg blot tilføje en dum NOT? Hmmm, hvorfor har jeg ikke tænkt på det før... Det må afprøves.
Avatar billede softspot Forsker
15. juni 2006 - 11:43 #4
Alternativt:

SELECT pt.*, b.id
FROM produktTabel pt
LEFT JOIN billeder b ON pt.id = b.produktid
WHERE b.id IS NULL
Avatar billede ldanielsen Nybegynder
15. juni 2006 - 13:11 #5
Du skal afgjort bruge OUTER JOIN

SELECT produkter.*
FROM produkter
LEFT OUTER JOIN billeder ON produkter.ID = billeder.produktID
WHERE billeder.produktID IS NULL

Dette er det samme som softspot foreslog

Performance er bedre. Den anden metode er brugbar hvis du blot vil spørge til et enkelt produkt, men ikke god til at trække en hel liste.
Avatar billede kev. Nybegynder
15. juni 2006 - 15:03 #6
Well, har brugt kim_falkners forslag, og det virker fint fint...!

Smid et svar
Avatar billede kim_falkner Nybegynder
15. juni 2006 - 15:05 #7
kender ikke helt dette pointsystem.
Avatar billede ldanielsen Nybegynder
16. juni 2006 - 00:20 #8
Hvis du synes JOIN's er besværligere end den anden syntaks, så kan jeg bare anbefale at du vænner dig til dem. De er kernen i al databaseprogrammering
Avatar billede kev. Nybegynder
18. juni 2006 - 14:33 #9
Ok, så vil jeg da prøve at bruge dem noget mere, er nemlig ikke specielt vild med joins....
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
Kurser inden for grundlæggende programmering

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