有一个type表: sale商品表:
type_id type_name sale_id type_id
1 青铜器 1 1
2 瓷器 2 1
3 工艺品 3 5
4 陶器 4 3
5 手工品 5 4
6 其他 现在我需要显示所有的类型(type_name),以及该类型对应的商品的数量,sale表中没有的type_id(如2,6)需要显示它的个数为0.但是现在只能查询出商品表(sale)中存在的type_id(即type_id 为1345的可以查询出来),但是type_id 为2和6的确查询不出来现在的效果:
type_id type_name count
1 青铜器 2
3 工艺品 1
4 陶器 1
5 手工品 1
请问我如何写sql语句可以实现如下效果? type_id type_name count
1 青铜器 2
2 瓷器 0
3 工艺品 1
4 陶器 1
5 手工品 1
6 其他 0知道的帮帮我,谢谢~
type_id type_name sale_id type_id
1 青铜器 1 1
2 瓷器 2 1
3 工艺品 3 5
4 陶器 4 3
5 手工品 5 4
6 其他 现在我需要显示所有的类型(type_name),以及该类型对应的商品的数量,sale表中没有的type_id(如2,6)需要显示它的个数为0.但是现在只能查询出商品表(sale)中存在的type_id(即type_id 为1345的可以查询出来),但是type_id 为2和6的确查询不出来现在的效果:
type_id type_name count
1 青铜器 2
3 工艺品 1
4 陶器 1
5 手工品 1
请问我如何写sql语句可以实现如下效果? type_id type_name count
1 青铜器 2
2 瓷器 0
3 工艺品 1
4 陶器 1
5 手工品 1
6 其他 0知道的帮帮我,谢谢~
select type_id, max(typename),count(sale_id) as fcount from (
select a.type_id,a.typename,b.sale_id from type a full join sale b on a.type_id=b.type_id) aa group by type_id
这样倒是可以,但是sale商品表里还有一个状态,加上这个条件就不行了
FROM (SELECT A.TYPE_ID, A.TYPE_NAME, B.SALE_ID
FROM TYPE AS A
FULL JOIN SALE AS B ON A.TYPE_ID = B.TYPE_ID) AA
GROUP BY TYPE_ID;
这个应该可以
select complex.type_id, complex.type_name, sum_sale_ = sum(sum_sale)
from (select type.*, sum_sale = case sale_id is null then 0 else 1
from type
left join sale on type.type_id = sale.type_id) complex
group by complex.type_id, complex.type_name
试试这个