我有两个名为table1
和table2
的表。 table2
可能包含来自table1
的元素。我想显示table2
的所有结果,如果table1
和status
可用,则显示价格1.如果table1
中没有产品匹配,{{1} }为0,需要将价格返回为0。
status
table1
和id pname item_code price status
1 product1 abcd 200 1
2 product2 pqrs 500 1
3 product3 wxyz 425 1
4 product5 mnop 100 0
如下
table2
我尝试过以下查询
id item_code
10 efgh
11 abcd
12 pqrs
13 mnop
但它返回table1和table2中状态为1的常用值,但如果SELECT `t2`.`id`, `t2`.`item_code`, `t1`.`price`,`t1`.`pname`, COUNT(t2.item_code) AS sellers FROM (`table2` as t2) LEFT JOIN `table1` as t1 ON `t1`.`item_code` = `t2`.`item_code` WHERE `t1`.`status` = 1 GROUP BY `t2`.`item_code`
中的table2
或table1
0中没有任何匹配项,则需要status
的所有记录,其价格为0 1}}。
预期输出
table1
请帮助。
谢谢,
答案 0 :(得分:0)
尝试以下查询:
SELECT `t2`.`id`, `t2`.`item_code`, `t1`.`price`,`t1`.`pname`, COUNT(t2.item_code) AS sellers FROM (`table2` as t2) LEFT JOIN (select * from table1 where status = 1)t1 ON `t1`.`item_code` = `t2`.`item_code` GROUP BY `t2`.`item_code`
答案 1 :(得分:0)
不确定您当前的查询是count
还是group by
但是您可以执行以下操作
select
t2.id,
t2.item_code,
case
when t1.status = 1 then t1.price
else 0
end as price
from table2 t2
left join table1 t1 on t1.item_code = t2.item_code
现在请注意,如果table1
在table2
中有多个匹配值,那么我们可能需要对数据进行分组。
答案 2 :(得分:0)
将检查左连接表的WHERE子句的一部分移动到ON子句
SELECT `t2`.`id`, `t2`.`item_code`, COALESCE(`t1`.`price`, 0),`t1`.`pname`, COUNT(t2.item_code) AS sellers
FROM (`table2` as t2)
LEFT JOIN `table1` as t1
ON `t1`.`item_code` = `t2`.`item_code`
AND`t1`.`status` = 1
GROUP BY `t2`.`item_code`