[MySQL] Selectie maken waarbij één veld dubbel moet fungeren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedenmiddag,

Ik loop een beetje tegen een probleem aan.

Ben bezig met het bouwen van een artikel systeem.
Je kunt hierbij aan één artikel meerdere eigenschappen toekennen.

En ik wil hier graag een filter op bouwen zodat je kunt zeggen: ik wil bijvoorbeeld alle flessen wijn zien die rood zijn en uit Frankrijk komen.

Als je één enkele zoekquery hebt werkt bij mij de volgende query prima:
code:
1
SELECT * FROM `webshopindexdata` WHERE `shopindexdatawaarde`='24' GROUP BY `shopindexdataproductlink`


Dit geeft het volgende resultaat :
Afbeeldingslocatie: http://img515.imageshack.us/img515/7852/resultaat1.jpg

Echter als ik meerdere mogelijkheden wil hebben dan wordt dit een probleem.
code:
1
SELECT * FROM `webshopindexdata` WHERE `shopindexdatawaarde`='24' OR `shopindexdatawaarde`='21' GROUP BY `shopindexdataproductlink`

En inderdaad de bovenstaande query werkt nog.
Afbeeldingslocatie: http://img413.imageshack.us/img413/8085/resultaat2.jpg

Maar niet als ik doe wat ik wil.
En dat is de producten selecteren die aan beiden verreisten voldoen.
Dat is zowel shopindexdatawaarde 24 hebben en een rij met shopindexdatawaarde 21 hebben.
En niet of / of.

Want zodra ik doe:
code:
1
SELECT * FROM `webshopindexdata` WHERE `shopindexdatawaarde`='24' AND `shopindexdatawaarde`='21' GROUP BY `shopindexdataproductlink`


Retourneerd hij niets.

Het idee is als volgt:
shopindexdataproductlink = de link naar het product (waar hij op dient te groeperen)
shopindexdatawaarde = de waarde waarop geselecteerd moet worden.

Maar zoals ik al zei kan één product meerdere kenmerken hebben.
En ik wil graag een select uitvoeren die kijkt welke producten zowel een rij hebben met het kenmerk shopindexdatawaarde 24 als een rij met het kenmerk shopindexdatawaarde 21.
En de rijen niet dubbel weergeeft.

Maar ik heb gegoogled en ben vastgelopen.
Allicht dat ik wat verkeerde zoektermen heb gebruikt want ik zal vast niet de eerste zijn die dit wiel wil uitvinden. Maar ik ben uit zoektermen.

Ik hoop dat iemand mij verder kan helpen.

P.S. dit is de tabel.
Afbeeldingslocatie: http://img257.imageshack.us/img257/6541/tabel.jpg

Acties:
  • 0 Henk 'm!

Verwijderd

Dat is best wel een kutte databasestructuur. Ik zou hem veranderen/vervangen, want dit gaat wel voor meerdere problemen zorgen, gok ik. ;)

[ Voor 20% gewijzigd door Verwijderd op 31-10-2009 13:38 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17-09 21:27

Creepy

Tactical Espionage Splatterer

Heb je enig idee waar GROUP BY voor bedoelt is? Lees Programming FAQ - SQL eens door ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Dat zou dus uitkomen op:

code:
1
SELECT * FROM `webshopindexdata` WHERE `shopindexdatawaarde` IN {21,24} GROUP BY `shopindexdataproductlink` HAVING COUNT(`shopindexdataproductlink`) = 2

[ Voor 5% gewijzigd door Verwijderd op 31-10-2009 13:43 ]