![]() |
MySQL - välja rader som uppfyller flera villkor
I brist på terminologi så vill jag välja de rader i t1 som har associerade rader i t3 som uppfyller godtyckligt antal villkor.
Kod:
SELECT t1.* FROM `t1` Kod:
WHERE t3.c IN ('this','also') Några tips? |
Normalt sett tillåter ju en left join att ta med t1 i ditt fall även om inget i t3 matchar.
Men i med att du lägger ett villkor under den normala WHERE satsen som gäller för t3, så får du inga resultat från t1 heller. Du kan i LEFT join ON köra ON t3.rel_id = t1.id AND t3.c IN ('that', 'too') På så sätt får du bara t3-resultat som matchar villkoren du satt för t3-joinen. |
Jag var nog inte tydlig i min fråga. Låt mig visa ett exempel. Anta att jag har tre tabeller:
products Kod:
ID | name | price Kod:
ID | product_id | property_id Kod:
ID | property_group |value Kod:
1 Fiat Panda 2500 Kod:
3 Peugot 2008 4200 |
Jag missförstod dig lite. Men tror följande blir rätt.
Kod:
SELECT * FROM products P |
Problemet är att den lösningen har en OR-logik. Den listar de produkter som är röda ELLER är crossover. Jag behöver de produkter som har egenskap 1 OCH egenskap 2 OCH egenskap 3..., eller snarare de produkter som har egenskap_array_1 OCH egenskap_array_2 o.s.v.
T.ex. vill jag i mitt filter vill se alla bilar som är blå ELLER röda OCH som är av typen crossover ELLER SUV... |
Kod:
SELECT * FROM products P |
Citat:
Jag tror dock att jag är en lösning på spåren: Kod:
SELECT bp.ID FROM `base_products` bp Kod:
GROUP BY ID HAVING COUNT(*) = 2 |
Du kan inte dela upp det i fler queries..?
alltså typ 1. select from product_properties where.. 2. ta bort duplicerade product id 3. select from products where id IN(...) Personligen tycker jag joins blir så komplext |
Citat:
Dock funkar lösningen enligt ovan, den gör precis det jag ville att den ska göra. |
Om du kör PV.ID IN (1,2,3,4,5,6) så får du ju alla resultat möjliga.
Mellan varje siffra är ju ett OR, så du ska därmed få varje matchande. Blir det inte så, så är det ju konstigt :) |
Alla tider är GMT +2. Klockan är nu 14:22. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson