[MySQL] ... WHERE 1 IN(field)

Pagina: 1
Acties:

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 30-12-2025
Hallo,

Ik dacht echt dat het mogelijk was om een query als
code:
1
SELECT * FROM table WHERE 1 IN(field)
uit te voeren, waarbij field een veld is met bijvoorbeeld 1,2,3 als waarde, maar MySQL geeft geen rijen terug.

Ik heb dit geprobeerd met MySQL 4.1.10 en 5.0.17.

Doe ik wat fout, of kan dit gewoon echt niet en heb ik me vergist?
Als dit niet kan er is dan een andere mogelijkheid met het resultaat wat ik bedoel?

[ Voor 10% gewijzigd door SWINX op 01-07-2006 15:18 ]

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Je hebt waarden gescheiden door komma's in een veld geplaatst? Die kun je er alleen met LIKE of een andere stringvergelijking uit halen. Je moet ook geen kommagescheiden waarden in een veld zetten, dat past niet in een relationele database. Zoek eens op wat normalisatie is en pas dat toe.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Javache
  • Registratie: Mei 2006
  • Laatst online: 13-02-2010
ofwel doe je
code:
1
SELECT * FROM table WHERE id IN(1,2,3)

of
code:
1
SELECT * FROM table WHERE id IN(SELECT * FROM ander_tabel)

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 30-12-2025
Javache schreef op zaterdag 01 juli 2006 @ 15:17:
ofwel doe je
code:
1
SELECT * FROM table WHERE id IN(1,2,3)
Hierbij is de eerste variabel (id) en de tweede vast (1,2,3)
Bij mij het andersom, ik wil weten of een getal voorkomt in een lijstje met kommagescheiden waardes.

-NMe- >> Je bedoelt dat ik beter een soort koppel tabel kan gebruiken, in plaats van een veld met komma gescheiden waardes?

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Ja. En laat de correcte term nou inderdaad koppeltabel zijn. :+

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

SWINX schreef op zaterdag 01 juli 2006 @ 15:22:
[...]


Hierbij is de eerste variabel (id) en de tweede vast (1,2,3)
Bij mij het andersom, ik wil weten of een getal voorkomt in een lijstje met kommagescheiden waardes.
Bedoel je dit:

code:
1
where 2 between field1 and field2

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 30-12-2025
nee, ik bedoel field1 bevat 1,2,3 en ik wil weten of daar 1 in voorkomt, vandaar ook mijn keuze om dat met IN() te proberen, maar als dat niet gaat zal ik maar overgaan tot een koppeltabel.

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:18
Als je waardes in je DB staan hebt, die dmv een of ander teken gescheiden staan in één veld, dan doe je iets mis.
Komma gescheiden velden in een rdbms zijn evil, ze beperken je en laten je de kracht van de DB niet uitbuiten, dus, gebruik idd een koppeltabel. Ook al bevat die koppeltabel dan miljoenen records, het zal nog performanter, onderhoudbaarder en duidelijker zijn dan een komma-gescheiden veld.

https://fgheysels.github.io/

Pagina: 1