【发布时间】:2012-02-14 12:37:32
【问题描述】:
我真的不知道如何解释,除了“垂直位置”。
想象一下下表:
TAGID|PRODUCTID|SHOP_ID
59 |3418-7 |38
61 |3418-7 |38
60 |4227-4 |38
61 |4227-4 |38
现在我想返回所有与标签 ID 相关的产品 ID:59,61。换言之,两个标签 ID 都存在行的产品 ID 值。
所以我想返回 3418-7,而不是 4227-4
如何在 SQL 语句中写得尽可能简单?
这是我目前的工作声明,但我觉得这可以以更聪明的方式完成:
SELECT
productid
FROM shop_tag_relations
WHERE
productid IN (select productid from shop_tag_relations WHERE tagid=59)
AND
productid IN (select productid from shop_tag_relations WHERE tagid=61)
GROUP BY productid,shop_id
【问题讨论】:
-
这是什么意思? “所有与 tagid 相关的产品 ID:59,61”
-
返回与 tagid 59 和 61 相关的 productid。这是一个关系表,它绘制一个表中的产品和另一个表中的标签之间的关系。例如,如果 3418 是男士棕色鞋,标签 59 可能是鞋子,标签 61 可能是男士,72 棕色等等。
标签: sql-server select relational-division