Avatar billede the-gnu.dk Nybegynder
15. december 2004 - 14:46 Der er 8 kommentarer og
1 løsning

SELECT JOIN og ikke i anden tabel

Jeg har to tabeller

users {
  id, handle, password
}

contacts {
  userid, contactid
}

I contacts er userid og contactid id'er fra users, altså hvilket userid der har hvilke contactid's.

Nu vil jeg så vælge alle fra users, hvor man IKKE HAR kendskab til user.id i forvejen. Nogen der kan hjælpe?
Avatar billede fennec Nybegynder
15. december 2004 - 14:50 #1
Hvilken version af MySQL bruger du??
Avatar billede the-gnu.dk Nybegynder
15. december 2004 - 15:00 #2
4.0.18
Avatar billede fennec Nybegynder
15. december 2004 - 15:16 #3
Prøv lige denne. Kan ikke huske hvilken version den er understøttet fra, men det virke IKKE i 3.x versionerne. Måske virker det først fra 5.x:

SELECT * FROM users WHERE id NOT IN (SELECT DISTINCT userid FROM contacts)
Avatar billede the-gnu.dk Nybegynder
15. december 2004 - 15:21 #4
#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT  DISTINCT userid
Avatar billede fennec Nybegynder
15. december 2004 - 15:24 #5
...Så er det først i 5.x versionerne de undstøtter selects i selects. Prøver lige om jeg kan finde en anden løsning.
Avatar billede michael_stim Ekspert
15. december 2004 - 15:26 #6
SELECT * FROM users u, contacts c WHERE u.id <> c.userid
Ved ikke om det er det du vil have.
Avatar billede fennec Nybegynder
15. december 2004 - 15:28 #7
Så prøver vi med left join:

SELECT users.* FROM users LEFT JOIN contacts ON contacts.userid=users.id WHERE contacts.userid IS NULL
Avatar billede the-gnu.dk Nybegynder
15. december 2004 - 15:36 #8
Jep... med contacts.contactid i stedet for contacts.userid, så virker.

Vil du lave et svar
Avatar billede fennec Nybegynder
15. december 2004 - 15:41 #9
... Også burde den også virke i 3.x versionerne. Den skal jeg lige huske til næste gang, så jeg ikke bruger "selects i selects" metoden, som jeg plejer. Jeg kunne også forstille mig at denne er hurtigere.

.o) <-- One Eyed Jack
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
Computerworld tilbyder specialiserede kurser i database-management

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