【发布时间】:2012-03-17 13:10:24
【问题描述】:
我的产品表中有两列,category1 和 category2。在我的类别表中,我有四个不同的类别,如果产品属于该类别,则类别编号在 category1 列下,如果它同时属于另一个类别,则该类别输入到 category2 列,产品没有不能同时属于两种以上的类别类型。
这是一个例子:
productID | category1 | category2
1 | 1 |
2 | 1 | 2
3 | 2 |
所以类别类型 1 将始终在类别 1 列中,如果同一产品属于类别类型 1 和类别 2,如上面产品 id 2 所示,那么在查询所有类别类型 2 的产品时,这会给我带来问题.
这是我要检索属于类别类型 1 的所有产品的第一个查询:
SELECT * FROM products WHERE category1 = 1
我的第二个查询要检索属于类别类型 2 的所有产品:
SELECT * FROM products WHERE category1 = 2 AND OR category2 = 2
我知道第二个查询是错误的,我只是写了它,因为我需要它工作。
我无法弄清楚如何用一个查询来查询两列,只能通过编写两个单独的查询,感谢任何建议。我使用的是 SQL Server 2008,因此可能不支持特殊的 SQL 函数。
【问题讨论】:
-
我不明白。你不就是想
SELECT * FROM products WHERE category1 = 2 OR category2 = 2吗? -
您希望从查询 2 中获得哪个产品 ID(使用您的示例)?
-
我试过那个解决方案,这只是运行查询的第一部分并且只返回第一部分,在 OR 这样做之后它永远不会返回第二部分。谢谢。
-
什么是“类别类型 1”:
category1或categoryX的值为 1?
标签: sql sql-server-2008