[MySQL] Query vraag: gebruik veld in IN functie

Pagina: 1
Acties:

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Ik kom er niet uit: Ik heb in een tabel een kolom staan waarin bijvoorbeeld "6,7,8" staat. Nu wil ik uit een andere tabel de rijen opvragen met id=6, id=7 of id=8.

Statisch werkt dat natuurlijk als volgt:
code:
1
SELECT * from tabel2 where ID IN (6,7,8)


als ik het echter probeer met
code:
1
SELECT * from tabel2 as t2, tabel tabel1 t1 WHERE t1.id=1 and t2.id IN t2.ids

dan krijg ik maar een regel terug. Is het mogelijk om aan de linkerkant van de query (tabel2 gedeelte) alle gematchte rijen weer te geven?

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Waarom gebruik je geen joins?
code:
1
SELECT * FROM tabel2 INNER JOIN tabel1 ON tabel2.id = tabel1.id WHERE tabel1.ID IN (6,7,8)

Of begrijp ik je verkeerd?

It’s nice to be important but it’s more important to be nice


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Daarvoor is je databasemodel verkeerd. Koppeltabellen gebruiken en het zou wel in een simpele query gedaan kunnen worden. een Array opslaan als een string is niet de verstandigste wat je kunt doen namelijk.

Als MYSQL subqueries zou hebben zou je het wel makkelijk kunnen oplossen (maar dan is nog steeds je database model niet correct.)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • B-Man
  • Registratie: Februari 2000
  • Niet online
dusty: oke. De reden om dit op deze manier op te slaan is vanwege het feit dat de gegevens vaak wijzigen. Als het met MYSQL niet gaat, zal ik mijn business logic wat aanpassen, zodat de gegevens in een koppeltabel komen te staan. Bedankt voor je reactie.

JonkieXL: je begrijpt me verkeerd. Ik gebruik al een JOIN, het probleem zit het im het feit dat de "6,7,8" dynamisch is, en uit een kolom in een enkele rij van een tabel komt.

Dusty: uit nieuwsgierigheid: hoe zou zo'n subselect eruit zien?

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
....WHERE id IN ( SELECT anderid from iets where dit = dat )
Da's een subselect :)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Juist omdat de gegevens vaak wijzigen is het nog meer noodzaak om het met een koppeltabel te doen. Bij een echte database zou je dan namelijk daardoor ook de integriteit kunnen bewaken.

Je nieuwsgierigheid is al opgelost door gert :)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • B-Man
  • Registratie: Februari 2000
  • Niet online
Bedankt heren.

M.b.t. de integriteit is het overigens zo dat in dit geval de betreffende gegevens weinig veranderen, en als dit het geval is, dan slechts door een component. Het is dus niet zo dat meerdere componenten/processen deze tabel wijzigen.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Het maakt niet uit hoeveen componenten/processen het aanpast ( een, twee, meer, het maakt allemaal niet uit..) , zodra het wordt aangepast en je werkt met een string ipv een koppeltabel heb je bij een normale database al kans dat je je data integriteit naar de knoppen gaan.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1