我有一张表格可以存储客户对产品的选择。
它存储客户编号,产品编号以及是否是产品的是或否。我们存储是/否,因为客户必须在所有产品上做出选择,以便我们检查他们是否做出了所有选择。
Customer | Product | Status
---------------------------
12345 | 1 | 0
12345 | 2 | 1
12345 | 3 | 1
12345 | 4 | 0
12345 | 5 | 1
23456 | 1 | 1
23456 | 2 | 0
23456 | 3 | 1
23456 | 4 | 1
23456 | 5 | 0
我想要做的是检查哪些客户选择了一组特定的产品。
这可能类似于select * from choices where product = 1 and product = 3 group by customer
,但我还必须使用status = 1
有没有办法在查询中解决这个问题,还是我不得不求助于一些PHP?
答案 0 :(得分:3)
select customer
from choices
where status = 1 and product in (1,3)
group by customer
having count(distinct product) = 2
答案 1 :(得分:0)
SELECT DISTINCT a.customer
FROM choices a, choices b
WHERE a.customer = b.customer
AND a.product = 1
AND b.product = 3;
这样做还允许您在以后使用更复杂的逻辑:如果您希望每个人在2012年购买产品1,而在2013年购买产品2,则可以在where子句中添加额外条件以过滤这些逻辑。