Mysql:多个查询位置

时间:2013-09-30 09:43:28

标签: php mysql sql

我有一张表格可以存储客户对产品的选择。

它存储客户编号,产品编号以及是否是产品的是或否。我们存储是/否,因为客户必须在所有产品上做出选择,以便我们检查他们是否做出了所有选择。

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?

2 个答案:

答案 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子句中添加额外条件以过滤这些逻辑。