Om jag förstått dig rätt.
select
i.item_name,
p.item_property_value
from
Items i
left join
ItemProperties p on i.item_id = p.item_property_item_id
group by
i.item_name
5 svar · 475 visningar · startad av mrnoname
Har 2 tabeller:
1. Items med item_id och item_name
2. ItemProperties med item_property_id, item_property_item_id och item_property_value
Vill kunna söka och hitta Items som matchar flera ItemProperties.
SELECT * FROM Items, ItemProperties WHERE item_id = item_property_item_id AND item_property_id = 2 AND item_property_id = 7;
Men denna funkar inte så som jag tänkt det och det står helt still just nu...
Hur gör jag för att skriva en fråga som hittar en Items som har en item_property_id = 2 OCH en item_property_id = 7 (och ev många fler)
Om jag förstått dig rätt.
select
i.item_name,
p.item_property_value
from
Items i
left join
ItemProperties p on i.item_id = p.item_property_item_id
group by
i.item_name
mrnoname skrev:
Hur gör jag för att skriva en fråga som hittar en Items som har en item_property_id = 2 OCH en item_property_id = 7 (och ev många fler)
Det du egentligen vill göra är att hitta items med item_property_id = 2 ELLER 7:
SELECT * FROM Items, ItemProperties WHERE item_id = item_property_item_id AND item_property_id in (2,7)
Problemet är att jag vill hitta Items som både har en item_property_id som är 2 och 7. Det kommer jag sen att utöka till att kanske vara Items som har item_property_id som är 2,7, 19, 23, 65 och 100.
Själv ser jag det som en sökning eller filtrering.
Spara i en variabel hur många item_property_id:s en item måste ha. Sedan använder du den variabeln i stället för "4" nedan.
SELECT
item_id,
count(distinct item_property_id)
FROM
Items INNER JOIN ItemProperties
ON
item_id = item_property_item_id
WHERE
item_property_id in (2,7,23,29)
GROUP BY
item_id
HAVING
count(distinct item_property_id) = 4
Tackar :-D