我有这个条件:
tb_product
id nome
"1" "prod1" "NULL" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 06:48:12"
"2" "prod2" "NULL" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 06:48:17"
"3" "prod3" "NULL" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 06:48:21"
tb_cp
id nome
"1" "cp1" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 06:42:36"
"2" "cp2" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 06:42:40"
tb_store
id cp_store location nome qta data_in data_out
"1" "cp1" "0.0" "prod1" "1.0" "2015-06-05 06:48:37" "NULL" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 06:48:41"
"2" "cp1" "4.0" "prod1" "1.0" "2015-06-05 06:49:02" "NULL" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 06:49:06"
"3" "cp1" "1.0" "prod2" "1.0" "2015-06-05 06:49:09" "NULL" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 06:49:13"
"4" "cp1" "12.0" "prod1" "1.0" "2015-06-05 07:05:05" "NULL" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 07:05:10"
"5" "cp1" "8.0" "prod1" "1.0" "2015-06-05 07:36:52" "NULL" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 07:36:57"
"6" "cp2" "0.0" "prod1" "1.0" "2015-06-05 09:28:06" "NULL" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 09:28:18"
"7" "cp2" "20.0" "prod2" "1.0" "2015-06-05 09:45:34" "2015-06-05 09:46:18" "NULL" "NULL" "NULL" "NULL" "NULL" "2015-06-05 09:46:18"
我创建了这个查询:
SELECT DISTINCT nome, pezzi, cp_store FROM(
SELECT nome,COALESCE(pezzi,0)as pezzi,cp_store FROM(
SELECT p.nome, COUNT(s.nome) as pezzi,cp_store
FROM tb_product as p LEFT JOIN tb_store as s
ON p.nome = s.nome
WHERE s.data_out is null OR s.data_out = ""
GROUP BY p.nome
union
select nome,null as pezzi,null as cp_store from tb_product) where cp_store='cp1' GROUP BY nome )
ORDER BY pezzi DESC
但结果是:
nome pezzi cp_store
"prod2" "1" "cp1"
如果我在查询中设置了cp2,请获取此结果:
nome pezzi cp_store
"prod1" "5" "cp2"
我看起来很错误,但我找不到它...我想获得,如果我设置cp1,这个结果:
nome pezzi cp_store
"prod1" "4" "cp1"
"prod2" "1" "cp1"
"prod3" "0"
答案 0 :(得分:0)
试试这个:
SELECT p.nome, COUNT(s.id), s.cp_store
FROM `tb_product` p
LEFT JOIN (SELECT * FROM `tb_store` WHERE cp_store = 'cp1') s ON s.nome = p.nome
GROUP BY s.nome
ORDER BY p.id