Mssql Select With "vertical"-where
I don't really know how to explain except with 'vertical where'. Imagine the following table: TAGID|PRODUCTID|SHOP_ID 59 |3418-7 |38 61 |3418-7 |38 60 |4227-4 |38 61
Solution 1:
SELECT PRODUCTID
FROM T
WHERE TAGID IN (59,61)
GROUP BY PRODUCTID
HAVING COUNT(DISTINCT TAGID) = 2
Or
SELECT PRODUCTID
FROM T
WHERE TAGID = 59
INTERSECT
SELECT PRODUCTID
FROM T
WHERE TAGID = 61
Solution 2:
SELECT DISTINCT
a.PRODUCTID
FROM mytable AS a
INNER JOIN mytable AS b ON a.PRODUCTID=b.PRODUCTID
WHERE a.TAGID=59
AND b.TAGID=61
;
Solution 3:
SELECT ProductId
FROM shop_tag_relations
WHERE TAGID IN (59,61)
GROUP BY ProductId
HAVING COUNT(DISTINCT TagId) = 2
Post a Comment for "Mssql Select With "vertical"-where"