webForumDet fria alternativet

SQL-fråga tabell med produkter och produktinfo

Databaser & SQL

5 svar · 475 visningar · startad av mrnoname

Medlem sedan okt. 200670 inlägg
Frågan#1

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)

Medlem sedan juli 20033 147 inlägg
#2

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
Medlem sedan dec. 20025 483 inlägg
#3

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)
Medlem sedan okt. 200670 inlägg
#4

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.

Medlem sedan dec. 20025 483 inlägg
#5

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
Medlem sedan okt. 200670 inlägg
#6

Tackar :-D

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)