我正在使用以下查询来获取发票明细。因此,即使没有为该发票注册的客户,我也需要获取发票明细。因此,在这种情况下,发票表中的外键cusidfk
为空。那么如何获得结果集?如何在同一结果集中为客户显示null?
SELECT invoice.invno,invoice.invdate,invoice.invtime,customer.bizname,invoice.addedby,item.nameinsin,invoicedetails.price,invoicedetails.soldprice,invoicedetails.qty,invoicedetails.subtotal,invoicedetails.total,payment.pamt,invoice.tot
FROM invoice, invoicedetails, item, customer, payment
WHERE invoice.invno=invoicedetails.invnofk
AND invoicedetails.itemfkcode=item.itemcode
AND customer.cusid=invoice.cusidfk
AND invoicedetails.invnofk='0000000000005'
AND invoice.invno=payment.invfkno
最佳答案
我建议使用JOIN
和LEFT JOIN
而不是隐式联接。
SELECT ...
FROM invoice
JOIN invoicedetails ON invoice.invno = invoicedetails.invnofk
JOIN item ON invoicedetails.itemfkcode = item.itemcode
JOIN payment ON invoice.invno = payment.invfkno
LEFT JOIN customer ON customer.cusid = invoice.cusidfk
WHERE invoicedetails.invnofk = '0000000000005'
如果没有条目,则使用
LEFT JOIN
的所有customer
字段将为NULL
。关于mysql - 即使外键为空,如何获取结果集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18853205/