[MySql] Kan geen "IN" query stellen

Pagina: 1
Acties:

  • Darkvater
  • Registratie: Januari 2001
  • Laatst online: 26-08-2024

Darkvater

oh really?

Topicstarter
Ik heb een database met 1-10, en een andere met 1-50
als ik dan wil weten welke er niet in de tweede zitten, vraag ik
code:
1
SELECT * FROM TABLE1 WHERE ID NOT IN (SELECT ID FROM TABLE2)

dus zo. Maar elke keer als ik zo'n vraag stel, of eentje precies overneem uit de MySql manual krijg ik een syntax error fout. Ik snap het niet, misschien jullie?


Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge


  • Fvdlaar
  • Registratie: Oktober 2001
  • Laatst online: 13-04 15:47
Misschien komt het omdat MySQL geen sub selects ondersteund.

  • Fvdlaar
  • Registratie: Oktober 2001
  • Laatst online: 13-04 15:47
Meanwhile, you can often rewrite the query without a sub-select:
code:
1
SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);

This can be re-written as:
code:
1
SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id;

Uit de MySQL documentatie

  • metaal
  • Registratie: Juli 2001
  • Laatst online: 31-01-2025
Als je het echt perse wel wilt kan je MySQL 4.nogwat gebruiken, maar die is op dit moment nog unstable denk ik. Nog ff w88 dus

  • Darkvater
  • Registratie: Januari 2001
  • Laatst online: 26-08-2024

Darkvater

oh really?

Topicstarter
bedankt metaal! En FvdLaar, ik wil NOT IN en niet IN ( ik heb het ook gelezen in de documentatie :) )


Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge


  • Fvdlaar
  • Registratie: Oktober 2001
  • Laatst online: 13-04 15:47
Het ging mij om het idee. Gewoon een copy paste. Maar waarom denk je dat als het met een IN niet werkt, het met een NOT IN wel zou werken? :)

  • Darkvater
  • Registratie: Januari 2001
  • Laatst online: 26-08-2024

Darkvater

oh really?

Topicstarter
nee, ik bedoelde de andere optie, de herschrijving. die werkte niet.


Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge


Verwijderd

Herschrijving kun je aanpassen, i.p.v. = maak je er dan != van ofsow - check even de documentatie voor de juiste syntax - dan werkt het. MySQL ondersteunt idd (v.3) geen sub-query;s.

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op donderdag 08 november 2001 01:20 schreef wijnolst het volgende:
Herschrijving kun je aanpassen, i.p.v. = maak je er dan != van ofsow
Nee. 'NOT IN' is niet zomaar te herschrijven naar een join.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op donderdag 08 november 2001 14:50 schreef Onno het volgende:

[..]

Nee. 'NOT IN' is niet zomaar te herschrijven naar een join.
En als je dus veel van dat soort (subselected queries) wilt gebruiken, kan je beter geen MySQL gebruiken. Subselects komen geloof ik pas in versie 4.1.x

Terwijl andere gratis DB's (zoals postgresql, sapdb, interbase) het wel al volledig ondersteunen.

Verwijderd

Voor het geval je php gebruikt: ik los NOT IN altijd alsvolgt op met php, als voorbeeld neem ik deze query:
SELECT * FROM TABLE1 WHERE ID NOT IN (SELECT ID FROM TABLE2)

Ik doe eerst de query SELECT ID FROM TABLE2 en alle ID's plaats ik in een array

vervolgens doe ik SELECT * FROM TABLE1

vervolgens kijk ik bij de verwerking van de query uitkomst met in_array(array) of elk id wel of niet in het table2 voorkomt.
Pagina: 1