mysql - 即使外键为空,如何获取结果集?

标签 mysql sql null key

我正在使用以下查询来获取发票详细信息。因此,即使没有客户注册发票,我也需要获取发票详细信息。所以在这种情况下,发票表中的外键 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

最佳答案

我建议使用 JOINLEFT 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/

相关文章:

php - 如何从 PHP 向数据库中插入多行数据

mysql - Mysql中如何根据where子句获取记录?

sql - oracle主键以字母开头

php - 应用程序服务器从哪里开始

php - MySQL 到 outfile 不能在 PHP 应用程序中工作,但可以在 mysql 中工作

通过 MySQL 的 Javascript DateTimePicker

mysql - 从 MYSQL SELECT 到 MYSQL VIEW

entity-framework - Entity Framework : Value cannot be null. 参数名称:类型

SQL 用前一个非 NULL 行填充 NULL 行

pointers - 隐藏 nil 值,理解为什么 golang 在这里失败