Beste,
Ik heb een probleem waar ik niet alleen uit ga komen.
ik heb 3 tabellen zoals hieronder beschreven.
producten
id
naam
categorieen
id
naam
product_categorie
product
categorie
Wat ik wil doen is alle producten ophalen die bestaan in categorie 1 EN 2. (dus eigelijk de bubbelen).
Weet iemand hier misschien raad mee?
Groetjes Mike
- [mysql vraag] Producten die voorkomen in categorie 1 en 2
-
02-08-2010, 01:10 #1Particulier
- Berichten
- 55
- Lid sinds
- 14 Jaar
[mysql vraag] Producten die voorkomen in categorie 1 en 2
-
02-08-2010, 01:39 #2
- Berichten
- 436
- Lid sinds
- 16 Jaar
misschien denk ik te simpel, maar wat denk je van:
Code:$query = "SELECT product FROM product_categorie WHERE categorie = 1 AND categorie = 2";
-
02-08-2010, 01:44 #3Particulier
- Berichten
- 55
- Lid sinds
- 14 Jaar
Beste Stefan,
Bedankt voor je snelle reactie, helaas is het niet zo simpel.
Als je jou query uit zou voeren dan krijg alle producten waar de categorie 1 of 2 is. Ik wil alle producten selecteren die bestaan in 1 maar ook in 2. dus niet alleen 1 of 2, maar allebei.
Groetjes Mike
-
02-08-2010, 01:54 #4
- Berichten
- 436
- Lid sinds
- 16 Jaar
mmh, ik zie het probleem inderdaad.
Ik zou het zo gauw ook even niet weten.
Ik weet wel een kleine omweg, als je in (tijds)nood zit, zou je dit dus kunnen gebruiken.
- Je selecteert alle producten, deze haal je door een while loop heen.
- In de while loop zet je twee query's
- een query voor het controleren op categorie 1 en een query voor het controleren op query 2
- controleer welke van de query's resultaten op leveren, leveren ze beide resultaten, dan komt hij in beide categoriën voor.
Is een omweg, en er zal ook vast wel iets voor bestaan in mysql, maar kom er momenteel ook even niet op.
Zoals ik al zei zou je dit als noodoplossing kunnen gebruiken.
-
02-08-2010, 01:59 #5Particulier
- Berichten
- 1.197
- Lid sinds
- 16 Jaar
In je while-loop hoef je maar 1 query te zetten dan?
Eerst haal je ze op 'where categorie=1' en dan in je while-loop controleer je of ze ook in 2 zitten.
Anders zou je de tabel-structuur moeten aanpassen o.i.d.
-
02-08-2010, 02:01 #6Particulier
- Berichten
- 55
- Lid sinds
- 14 Jaar
Bedankt voor beide reacties. Een while loop is geen optie. Het moet in de query.
Cedric H.: Wat zou er veranderd moeten worden in de structuur dan?
-
02-08-2010, 02:06 #7Particulier
- Berichten
- 1.197
- Lid sinds
- 16 Jaar
Categorien meegeven (max 2?) bij product
where categorie="1,2"
Aanvullend bericht:
Waarom moet het eigenlijk in de query?
Aanvullend bericht:
Edit: hier misschien iets mee? http://www.htmlforums.com/databasing...umn-73278.htmlLaatst aangepast door Cedric H. : 02-08-2010 om 02:11 Reden: Automatisch samengevoegd.
-
02-08-2010, 03:18 #8
- Berichten
- 694
- Lid sinds
- 14 Jaar
Werkt dit?:
$query = "SELECT product FROM product_categorie WHERE categorie1 = categorie2";
-
02-08-2010, 08:52 #9
- Berichten
- 660
- Lid sinds
- 17 Jaar
Ik moet zeggen dat je tabelstructuur niet ideaal is, maar er valt prima in myql mee te werken.
De volgende code zou moeten werken:
SELECT p.id, p.naam
FROM producten AS p
INNER JOIN product_categorie AS pc ON ( p.id = pc.product )
WHERE (pc.categorie = '1'
OR pc.categorie = '2'
)
GROUP BY p.id
HAVING COUNT( * ) = '2'
-
02-08-2010, 09:55 #10Particulier
- Berichten
- 55
- Lid sinds
- 14 Jaar
Iedereen bedankt voor de reacties!
@Lodewijk: HELD!
-
06-08-2010, 18:22 #11
- Berichten
- 1.346
- Lid sinds
- 17 Jaar
SELECT kolomnaam FROM tabelnaam WHERE kolomnaam IN (waarde1, waarde 2)
-
06-08-2010, 19:04 #12
- Berichten
- 1.499
- Lid sinds
- 16 Jaar
Gewoon joinen zoals lodewijk aangeeft.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic