webForumDet fria alternativet

Ta ut poster som delar samma taggar

Databaser & SQL

2 svar · 1 292 visningar · startad av shiner

Medlem sedan apr. 20112 inlägg
Frågan#1

Hej,

Här kommer en SQL-fråga:

Jag kör just nu med följande system för taggar;

s_tags
tag_id, tag_name

s_items
...

s_item_tags
id, tag_id, item_id

Alla taggar som finns är skapade i s_tags och sen kopplar jag dem till alla items i s_item_tags med varsin rad - no problems.

Så här kan det se ut:

s_items_tags
item_id | tag_id
700 | 10
700 | 20
701 | 10
701 | 20
702 | 10
702 | 30

Så om jag vill få ut enbart poster som använder BÅDE tag 10 och 20, så skulle det bara bli 700 och 701 kvar i listan.

Enklaste och mest logiska (?) hade ju varit om SELECT * FROM s_items_tags WHERE tag_id=10 AND tag_id=20 hade fungerat, men det gör ju inte det.

Någon som har en lösning? Gruppera eller joina på nåt vänster?

Tack

Medlem sedan dec. 200012 464 inlägg
#2
select item_id
  from s_items_tags
 where tag_id in (10,20)
 group by item_id
having count(*) = 2
Medlem sedan apr. 20112 inlägg
#3

Tack Lars,

having count(*) löste allt!

276 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
145 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)