[英]PHP & SQL issue: Need to echo all results possible when it doesn't return some fields
有没有一种方法可以更改此sql语句以返回确实找到的结果? 基本上现在, orderprc.item_no
和orderprc.cust_no
并不总是存在于表中。 因此,如果不这样做,我的查询将不会返回任何内容。
当它们不存在时,我想做的是回显它确实找到的所有内容,而将其余部分留空。 我在桌子里回荡这些。 有什么建议么? 让我知道您是否需要更多信息。
SELECT
ordernumber.ord_num,
lineitem.item_no,
lineitem.item_desc_1,
ordernumber.cus_no,
lineitem.unit_price,
cic.sman,
orderprc.description
FROM ordernumber JOIN lineitem
ON ordernumber.ord_num = lineitem.ord_num
JOIN cicmpy ON ordernumber.cus_no = cic.debcode
JOIN orderprc ON ordernumber.cus_no = orderprc.cust_no
WHERE ordernumber.ord_num = $multi_orders
AND orderprc.item_no = lineitem.item_no
AND orderprc.cust_no = ordernumber.cus_no
AND getdate() between start_dt and end_dt
是的,请使用OUTER JOIN(在SQL语句中拼写为LEFT JOIN
或RIGHT JOIN
),而不要使用INNER JOIN。 当您仅使用术语JOIN
,它默认为INNER JOIN。
在您的示例中,SQL语句如下所示:
SELECT ordernumber.ord_num, lineitem.item_no, lineitem.item_desc_1,
ordernumber.cus_no, lineitem.unit_price, cic.sman, orderprc.description
FROM ordernumber
JOIN lineitem ON ordernumber.ord_num = lineitem.ord_num
JOIN cicmpy ON ordernumber.cus_no = cic.debcode
LEFT JOIN orderprc ON ordernumber.cus_no = orderprc.cust_no
WHERE ordernumber.ord_num = $multi_orders
AND orderprc.item_no = lineitem.item_no
AND orderprc.cust_no = ordernumber.cus_no
AND getdate() BETWEEN start_dt AND end_dt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.