Avatar billede Mik2000 Professor
20. april 2011 - 14:56 Der er 6 kommentarer og
2 løsninger

SQL spørgsmål

Hej

Jeg har en database med bl.a. følgende to tabeller

Personer:
id
navn
tlf

Person_connection:
id
gruppe_id
person_id

Nu vil jeg gerne hente alle fra personer, undtagen hvis personens id (id) er repræsenteret i person_connection (person_id)

Hvordan laver man en SQL sætning der kan det?
Avatar billede erikjacobsen Ekspert
20. april 2011 - 15:34 #1
SELECT * FROM personer WHERE NOT id IN (SELECT person_id FROM person_connection)
Avatar billede Mik2000 Professor
20. april 2011 - 23:43 #2
Hej

Fantastisk - tak for hjælpen

Dog lige en ting mere.

Fik nemlig skrevet det lidt for hurtigt.

Nu vil jeg gerne hente alle fra personer, undtagen hvis personens id (id) er repræsenteret i person_connection (person_id)

Men samtidige skal det kun være i den gruppe man er i.
Dvs. nu hvis man er i en gruppe og har tilføjet personen til en anden gruppe, så er personen væk. Men personen skal kun være væk hvis det er i samme gruppe.
Så der skal bygges noget ind med gruppe_id, men ved ikke helt hvor.

Håber du gider at hjælpe igen - spørg endelig hvis der er noget :)
Avatar billede erikjacobsen Ekspert
20. april 2011 - 23:47 #3
Nej, den forstår jeg ikke. Kan du komme med et par eksempler?
Avatar billede Mik2000 Professor
20. april 2011 - 23:57 #4
Yep

Det er fordi jeg bruger det til at hente dem der er tilføjet til en gruppe og dem der ikke er tilføjet til en gruppe endnu.
Din sætning henter dem der ikke er tilføjet til en gruppe endnu.

Problemet er hvis jeg så tilføjer 3 personer, og går ind i en anden gruppe, så er de væk fra listen fordi de findes i person_connection tabellen

Så dvs. at sætningen skal stadig tjekke at id ikke er i tabellen, men kun hvor gruppe_id er lig med en variabel jeg har

Håber det er nemmere at forstå, ellers så skriv endelig :)
Avatar billede erikjacobsen Ekspert
21. april 2011 - 00:03 #5
Stadig ikke forstået - eksempel tak. Men måske kan det tolkes som:

SELECT * FROM personer WHERE NOT id IN (SELECT person_id FROM person_connection WHERE gruppe_id=77)

Hvor du så putter noget andet ind end 77. Men det er et gæt, en tidlig torsdag morgen.
Avatar billede Mik2000 Professor
24. april 2011 - 13:25 #6
Lol ja det var jo simpelt og helt nede på jorden sql, men kendte ikke NOT IN begrebet så tænkte det måske var svære

Mange tak for hjælpen :)

Nu skriver du at du ikke samler på point, men vil du have dem alligevel så får du dem selvfølgelig ved at skrive et svar, og ellers snupper jeg dem selv igen :)
Avatar billede Mik2000 Professor
05. maj 2011 - 16:00 #7
Lukker
Tak for hjælpen :)
Avatar billede Mik2000 Professor
05. maj 2011 - 16:00 #8
Lukker

Tak for svaret
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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