Avatar billede mrjowns Novice
20. februar 2004 - 11:13 Der er 11 kommentarer og
2 løsninger

SELECT med NOT og IN i MySQL 4.0.15, hvad gør man så?

Denne SQL-sætning virker kun til MySQL v5, men da Wannafind endnu ikke understøtter denne har jeg kun version 4.0.15 til rådighed.

SELECT username FROM bruger WHERE aktiv = '0' AND not bruger.username in (SELECT username from komp)

Mit spm er så, hvordan jeg kan gøre det samme i denne version?

Jeg skal bruge alle de 'username' (felt) fra 'bruger' (tabel) som ikke optræder i 'username' (felt) i 'komp' (tabel).

Kan nogen hjælpe med det?
Avatar billede fennec Nybegynder
20. februar 2004 - 11:54 #1
er det ikke sådan??
SELECT username FROM bruger WHERE aktiv = '0' AND bruger.username not in (SELECT username from komp)
Avatar billede mrjowns Novice
20. februar 2004 - 12:29 #2
Det tvivler jeg på - får nemlig stadig denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.15-standard-log]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 username from komp)' at line 1
Avatar billede hiks Nybegynder
20. februar 2004 - 14:28 #3
du kan vel godt bruge IN - men bare ikke subquery!

du kan vel lave et recordsæt der består af:

sql = "SELECT username from komp;"

hvor du så laver et loop der ligger username i en variable med kommaer imellem.

'høker
i = 0
While rs.eof = false
  dim username
  if i <> 0 then
    username = username & ", "
  end if

  username = rs("username")
  i = i + 1
  rs.movenext
WEND

'nyt rs.
sql = "SELECT username FROM bruger WHERE aktiv = '0' AND bruger.username not in (" & username &");"

sådan burde det kunne klares...

/hiks
Avatar billede hiks Nybegynder
20. februar 2004 - 14:30 #4
og username skal jo så lige sættes lig med:

username = username & " " & rs("username")

istedet for bare:

username = rs("username")
Avatar billede mrjowns Novice
20. februar 2004 - 16:27 #5
Nu har jeg indsat følgende:

Set rs1 = Server.CreateObject("ADODB.RecordSet")
SQL1 = "SELECT username FROM komp"
Set rs1 = MySQLConn.Execute(SQL1)

'høker
i = 0
While rs1.eof = false
  dim username
  if i <> 0 then
    username = username & ", "
  end if

  username = username & " " & rs1("username")
  i = i + 1
  rs1.movenext
WEND

Set rs2 = Server.CreateObject("ADODB.RecordSet")
SQL2 = "SELECT username FROM bruger WHERE aktiv = '0' AND bruger.username not in (" & username & ");"
Set rs2 = MySQLConn.Execute(SQL2)

Men får denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-4.0.15-standard-log]Unknown column 'JON' in 'where clause'

'JON' er et username...
Avatar billede eagleeye Praktikant
21. februar 2004 - 22:51 #6
Der skal ' omkring ordne, så denne linje:

username = username & " " & rs1("username")

Skal være:

username = username & " '" & rs1("username") & "'"
Avatar billede arne_v Ekspert
21. februar 2004 - 22:55 #7
Prøv:

SELECT username
FROM bruger LEFT JOIN komp ON bruger.username = komp.username
WHERE bruger.aktiv = '0' AND komp.username IS NULL
Avatar billede mrjowns Novice
23. februar 2004 - 10:58 #8
Jeg tester jeres forslag senere i dag...
Avatar billede arne_v Ekspert
06. marts 2004 - 15:33 #9
Fik du det til at virke ?
Avatar billede mrjowns Novice
09. marts 2004 - 20:12 #10
Yep, endelig fik jeg tid til at kigge på det! Point til Eagleeye og Hiks - så Eagleeye >> vil du lave et svar?
Avatar billede eagleeye Praktikant
09. marts 2004 - 20:13 #11
Ok et svar fra mig :)
Avatar billede mrjowns Novice
05. maj 2004 - 12:09 #12
Better late then never...
Avatar billede arne_v Ekspert
05. maj 2004 - 12:24 #13
Prøvede du mit forslag ?
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