Avatar billede tigerdyr2007 Praktikant
14. september 2010 - 08:36 Der er 4 kommentarer og
1 løsning

Finde poster som ikke har en primarycontact

Hej

Jeg har to tabeller:

tbl_rekvirenter: ID, Navn, etc.
tbl_kontakter: ID, rekvirentID, firmaID, primarycontact[yes/no], etc.

tbl_kontakter indeholder typisk 1-3 poster per rekvirent.

Jeg skal så finde alle poster i tbl_kontakter, som ikke minimum har én post hvor primarycontact er sat til yes.

Håber ovenstående er præcist, og der er nogen som kan skrive en SQL sætning som kan klare opgaven.

Mvh. Klaus
14. september 2010 - 09:31 #1
Jeg gaar ud fra at du vil finde alle rekvirenter der ikke har en primarycontact.  (Din forklaring, hvis taget bogstaveligt, kan jeg ikke faa til at haenge sammen).  Det kan du finde med denne query:

SELECT * FROM tbl_rekvirenter r LEFT JOIN tbl_kontakter k ON r.ID = k.rekvirentID WHERE k.ID NOT IN(SELECT ID FROM tbl_kontakter WHERE primarycontact = true)
Avatar billede tigerdyr2007 Praktikant
14. september 2010 - 09:52 #2
Hej

Det funker ikke rigtigt. Det giver forkerte resultater (ud fra koden er de sikkert rigtige, men det er ikke dem jeg vil have!)

Jeg omformulerer lige en linie fra mit spørgsmål, som jeg godt kan se er upræcis:

Jeg skal så finde alle poster i tbl_rekvirenter, som ikke minimum har én post i tbl_kontakter hvor primarycontact er sat til yes.

Og du har helt ret, jeg vil finde de rekvirenter som ikke har en primarycontact. Men med ovenstående kode får jeg et sæt resultater som jeg ikke lige kan gennemskue, men de er i hvert fald ikke rigtige. Gider du prøve igen?
14. september 2010 - 10:05 #3
Hvis du kun vil have id og navn for hver rekvirent der ingen primary kontakter har saa proev denne:

SELECT DISTINCT r.ID, r.Navn
FROM tbl_rekvirenter AS r LEFT JOIN tbl_kontakter AS k ON r.ID=k.rekvirentID
WHERE k.ID NOT IN(SELECT ID FROM tbl_kontakter WHERE primarycontact = true);

Hvis det ikke giver hvad du forventede saa forklar hvad du forventede.  Jeg lavede en mini-Access applikation med de to tabeller og fyldte nogle vaerdier i, og queryen giver et resultat der passer med tabellerne.  Hvis du vil kan jeg emaile den.  I saa fald til hvilken email, og bruger du Access 2007 eller nyere eller Access 2000/2003?
Avatar billede tigerdyr2007 Praktikant
15. september 2010 - 11:44 #4
Hej Christian

Din kode duer ikke til det jeg vil, men det er nok manglende præcision fra min side!. Men den var god nok til at sætte mig på rette spor, så jeg synes du skal have lidt point. så smid et svar. For god ordens skyld indsætter jeg min løsning herunder, som er meget tæt på din:

SELECT DISTINCT r.ID, r.fornavn
FROM tbl_rekvirent AS r
WHERE (((r.ID) Not In (SELECT rekvirentID FROM tbl_kontakter WHERE primarykontact = true)));
15. september 2010 - 16:15 #5
Svar fra mig, og til lykke med at det er kommet til at virke.
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

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