我的以下查询仅在dc_detail表中存在dcno时显示结果
但实际上我需要的是,即使这样,如果在dc_detail表中不存在dcno,它应该将dcno定义为0
并选择该结果
提前致谢
SELECT p.po_no as id, DATE_FORMAT(p.po_date, '%d-%m-%Y')as po_date, p.customer, p.cust_po as po_no,p.tot_ord_qty,
DATE_FORMAT(p.delivery_date, '%d-%m-%Y')as delivery_date,p.dc_status,p.inv_status,p.tot_dc_qty,p.tot_inv_qty,
GROUP_CONCAT(distinct d.dc_no SEPARATOR ', ') as dc FROM po_header p, dc_details d
where p.cust_po=d.cust_po
group by p.cust_po;
答案 0 :(得分:0)
您应该使用左连接来包含没有详细信息的标头。这将为您提供不存在的详细信息字段的空行。 要获取值0而不是null,可以使用coalesce函数。 查询的相关部分是
SELECT COALESCE(d.dc_no, 0),...
FROM po_header p LEFT JOIN dc_detail d ON p.cust_po=d.cust_po
Coalesce函数返回第一个非null参数。