Hallo allemaal!

Ik heb een probleem met SQL in PHP, dit probleem is waarschijnlijk best vindbaar op Google maar ik heb erge moeite met het begrijpen hiervan. Vandaar toch de vraag om hulp.

Ik heb twee tabellen:
- artikel
id = 1 | naam = pc |
id = 2 | naam = pc twee |
id = 3 | naam = pc drie |
etc.
- kenmerk
artikelid = 1 | kenmerk = groen
artikelid = 2 | kenmerk = groen
artikelid = 1 | kenmerk = groot
etc.

Nu wil ik een filter maken, en heb de volgende SQL query daarvoor:

SELECT artikel.naam,kenmerk.kenmerk FROM artikel,kenmerk WHERE kenmerk.artikelid = artikel.id AND kenmerk.kenmerk = 'groen' GROUP BY artikel.id

Nu krijg ik terug: artikel 1 en 2 want deze zijn beide groen. Maar hoe kan ik een tweede filter toevoegen aan de query? Dat deze kijkt naar alle artikelen die bijvoorbeeld groen én groot zijn. Zodat in dit voorbeeld alleen 2 wordt weergegeven.

Met vriendelijk groet
Sander
Hallo, sorry als dit overkomt als een bump, maar ik kan mijn probleem wat ontleden tot één tabel. Dan lijkt het een duidelijker verhaal.

Ik heb de volgende database:
#1 Stoel | Geel
#2 Stoel | Hout
#3 Tafel | Geel

Nu wil ik alles selecteren dat zowel geel, als van hout is. Dus dat is in dit voorbeeld alleen Stoel, maar dan twee keer.

Ik hoop dat iemand kan helpen :)
SELECT artikel.naam,kenmerk.kenmerk
FROM artikel,kenmerk
WHERE kenmerk.artikelid = artikel.id
AND (kenmerk.kenmerk = 'groen' OR kenmerk.kenmerk = 'groot')
ORDER BY artikel.id

Gebruik geen GROUP BY als je niet groupeert (sum,avg,count,min,max).
Gebruik ORDER BY om te sorteren!
Hallo John D, bedankt voor je hulp :)

Ik heb je query even getest, maar dan geeft hij als resultaat ook PC 2 terug. Omdat bij AND (kenmerk.kenmerk = 'groen' OR kenmerk.kenmerk = 'groot') ook alleen een groen artikel wordt teruggegeven.

Ik wil graag alleen de rijen weergeven waarvan zowel de cominatie van artikelid & groen als artikelid & groot in de tabel voorkomen.
je zegt het zelf eigenlijk al , dus van OR AND maken
Beste Teun, dankje voor de reactie.

Maar wanneer je AND gebruikt verwacht SQL dat beide eigenschappen in 1 rij staan. Dus dan zullen er automatisch 0 resultaten worden teruggegeven. Nee, dit probleem ligt wat ingewikkelder, ik heb al geprobeerd te werken met een tweede koppeltabel, maar dat is mij ook niet gelukt.

Ik hoop dat iemand een oplossing weet.

SELECT artikel.naam,kenmerk.kenmerk
FROM artikel,kenmerk
WHERE kenmerk.artikelid = artikel.id
AND kenmerk.kenmerk = 'groen' 
UNION
SELECT artikel.naam,kenmerk.kenmerk
FROM artikel,kenmerk
WHERE kenmerk.artikelid = artikel.id
AND kenmerk.kenmerk = 'groot'
ORDER BY artikel.id
Besta Aad B, bedankt voor de oplossing ;)

En daar dacht ik het bijna niet meer te kunnen verhapstukken, dan kom jij oplossing! Heel erg bedankt voor de hulp allemaal, mijn query werkt nu als een sneltrein.

Reageren