0
user table
========
id(int) | name(varchar)
------------------------
1       | user1
2       | some_other_user



product table
===============
id(int) | user_id(int) | product(varchar) | status(varchar)
------------------------------------------------------------
1       | 1            | product1         | bought
2       | 1            | product3         | sold
3       | 2            | product22        | sold
4       | 2            | product2         | bought
5       | 2            | product4         | sold
6       | 1            | product5         | bought
7       | 1            | product7         | sold

status = sold我需要使用单个 mysql 查询来获取用户的姓名、他拥有多少产品以及这些产品中有多少具有. 有任何想法吗?

4

2 回答 2

1

尝试这个

SELECT u.id, u.name, 
COUNT(p.id) AS totalproducts,
COUNT(IF(p.status="sold",p.user_id,NULL))
FROM users u
INNER JOIN products p ON p.user_id = u.id
GROUP BY u.id
于 2012-04-10T11:41:06.723 回答
1

尝试以下查询:

select 
    u.id, 
    u.name, 
    count(p.product) as totalproducts,
    sum(case when p.status = 'sold' then 1 else 0 end) as soldproducts
from user u
inner join product p on u.id=p.user_id
group by u.id, u.name
于 2012-04-10T11:41:28.880 回答