Avatar billede sorenmt84 Juniormester
16. september 2007 - 21:38 Der er 8 kommentarer og
1 løsning

Hent fra tabel, hvis ikke opført i anden tabel

Jeg skal bruge en lille udtræk, der, som udgangspunkt skal hente alle poster fra tabellen "medarbejdere", dog ikke hvis der findes en post i tabellen "projekter_medarbejdere" hvor ref_projekt = Request.Querystring("id") og ref_medarb = (id fra tabellen medarbejdere)

Jeg har prøvet med følgende, men det driller lidt

strSQL = "SELECT * FROM medarbejdere WHERE slettet = FALSE AND Exists(select * from projekter_medarbejdere where projekter_medarbejdere.ref_projekt = " & Request.QueryString("id") & " and projekter_medarbejdere.ref_medarb<>medarbejdere.id) order by navn asc "
Avatar billede neoman Novice
16. september 2007 - 21:51 #1
strSQL = "SELECT * FROM medarbejdere WHERE slettet = FALSE AND medarbejdere.id NOT IN (SELECT id FROM projekter_medarbejdere WHERE projekter_medarbejdere.ref_projekt = " & Request.QueryString("id") & " AND projekter_medarbejdere.ref_medarb=medarbejdere.id) order by navn asc "
Avatar billede ldanielsen Nybegynder
17. september 2007 - 13:57 #2
Måske denne:

strSQL = "SELECT * FROM medarbejdere LEFT OUTER JOIN projekter_medarbejdere ON projekter_medarbejdere.ref_medarb = medarbejdere.id AND projekter_medarbejdere.ref_projekt = " & Request.QueryString("id") & " WHERE medarbejdere.slettet = FALSE AND projekter_medarbejdere.id IS NULL"
Avatar billede sorenmt84 Juniormester
17. september 2007 - 19:12 #3
>> Neoman

Det opfører sig lidt sjovt...

Den lister forsat alle fra tabellen "medarbejdere", selvom de findes i projekter_medarbejdere - Så længe jeg så kun tilføjer dem der ikke er på listen i forvejen, er det ok, men tilføjer jeg en af dem der allerede er på listen, kommer navene til at stå dobbelt
Avatar billede sorenmt84 Juniormester
17. september 2007 - 19:13 #4
>> ldanielsen

Din udgave, giver følgende fejl:
Microsoft JET Database Engine error '80040e14'
Join expression not supported.
Avatar billede neoman Novice
17. september 2007 - 19:25 #5
så vidt jeg kan se så matcher min sql din verbale opskrift - enten tager jeg fejl, eller også beskrive din opskrift ikke 100 % det ønskede:)
Avatar billede ldanielsen Nybegynder
17. september 2007 - 21:29 #6
Hvilken database er det da?

Nå, men så denne:

strSQL = "SELECT * FROM medarbejdere medarbejdere.slettet = FALSE AND NOT EXISTS (SELECT id FROM projekter_medarbejdere WHERE projekter_medarbejdere.ref_medarb = medarbejdere.id AND projekter_medarbejdere.ref_projekt = " & Request.QueryString("id") & ")"

Hvis der kommer dobbelte medarbejdere ud, så skal du bare bruge GROUP BY:

SELECT felt1, felt2 FROM ..... WHERE ..... GROUP BY felt1, felt2
Avatar billede sorenmt84 Juniormester
19. september 2007 - 20:43 #7
ladnielsen... Dit nye forslag er lige efter bogen ;-) det virker bare som det skal... Der mangler godt nok lige "where" mellem "medarbejdere" og "medarbejdere.slettet" men ellers som det skal

Vil du komme med et svar
Avatar billede sorenmt84 Juniormester
19. september 2007 - 20:45 #8
>> Neoman

Jeg fandt ud af det er mig der havde lavet noget fuck up der gjorde at nogle blev gentaget 2 gange, men dit udtræk fjerner ikke medarbejderne fra listen, selvom de findes i medarbejdere_projekt.
Avatar billede ldanielsen Nybegynder
20. september 2007 - 13:53 #9
Svar
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