如何在 mysql 加入时检查另一个 table 没有数据?
How to check in another table has no data while doing mysql join?
我有两个mysqltable.
Invoice_details
invoice_no proje_ID invoice_Date invoice_amount
1004 6
1005 4
1006 2
1007 2
1008 1
1009 7
received_amount_details
invoice_no received_amount
1004 205.00
1004 40.00
1006 283.50
Expected ouput: select from invoice_details where proje_ID =6
invoice no invoice_amount invoice_Date received_amount
1004 245.00
Expected ouput: select from invoice_details where proje_ID =2
invoice no invoice_amount invoice_Date received_amount
1006 283.50
1007 0.00 (becoz 1007 invoice is not there in another table called received_amount_details so show total sum 0.00)
Expected ouput: select from invoice_details where proje_ID =7
invoice no invoice_amount invoice_Date received_amount
1009 0.00
这是我的查询:
public function many($id) {
$sql = "SELECT invoice_details.invoice_No, invoice_details.invoice_Date, invoice_details.invoice_amount,
SUM(received_amount_details.received_amount) as totalreceiptamt
FROM
(SELECT DISTINCT invoice_no, received_amount FROM received_amount_details) AS received_amount_details
INNER JOIN invoice_details ON received_amount_details.invoice_no = invoice_details.invoice_No
where invoice_details.proje_ID='7'
group by invoice_details.invoice_No";
return $this->db->query($sql)->result();
}
如果我 select 发票详细信息 proje_ID='7',目前我得到的结果是空的
我必须在哪里更改我的 php 代码?
当我 select 一张发票(发票 no:1004)时,它会显示所有发票明细和总额 received_amount (205.00 + 40.00)。但是如果 select invoice (invoice no:1007) 正在获取空数据,因为此 1007 发票编号在第二个 table 中不存在。如果 received_amount_details table 中不存在,则仅 return 发票详细信息和总计 received_amount =0.00。 (我想显示项目 ID =2 和总计 received_amount =0.00 的发票详细信息。)
在 SQL 查询中添加 IF 条件,类似这样。
SELECT invoice_details.invoice_no,
invoice_details.invoice_date,
invoice_details.invoice_amount,
SUM(IF(received_amount_details.received_amount IS NULL
OR received_amount_details.received_amount = '', 0.0,
received_amount_details.received_amount)) AS totalreceiptamt
FROM (SELECT DISTINCT invoice_no,
received_amount
FROM received_amount_details) AS received_amount_details
right join invoice_details
ON received_amount_details.invoice_no =
invoice_details.invoice_no
WHERE invoice_details.proje_id = '7'
GROUP BY invoice_details.invoice_no
这将添加 0.0,因为默认值不是 received_amount_details.received_amount IS NULL 或空白
此外,我们正在执行右连接以从 invoice_details 页面获取所有值。
您可以在 MYSQL 此处了解有关 IF 条件的更多信息,
https://www.w3schools.com/mysql/func_mysql_if.asp
https://dev.mysql.com/doc/refman/8.0/en/if.html
我有两个mysqltable.
Invoice_details
invoice_no proje_ID invoice_Date invoice_amount
1004 6
1005 4
1006 2
1007 2
1008 1
1009 7
received_amount_details
invoice_no received_amount
1004 205.00
1004 40.00
1006 283.50
Expected ouput: select from invoice_details where proje_ID =6
invoice no invoice_amount invoice_Date received_amount
1004 245.00
Expected ouput: select from invoice_details where proje_ID =2
invoice no invoice_amount invoice_Date received_amount
1006 283.50
1007 0.00 (becoz 1007 invoice is not there in another table called received_amount_details so show total sum 0.00)
Expected ouput: select from invoice_details where proje_ID =7
invoice no invoice_amount invoice_Date received_amount
1009 0.00
这是我的查询:
public function many($id) {
$sql = "SELECT invoice_details.invoice_No, invoice_details.invoice_Date, invoice_details.invoice_amount,
SUM(received_amount_details.received_amount) as totalreceiptamt
FROM
(SELECT DISTINCT invoice_no, received_amount FROM received_amount_details) AS received_amount_details
INNER JOIN invoice_details ON received_amount_details.invoice_no = invoice_details.invoice_No
where invoice_details.proje_ID='7'
group by invoice_details.invoice_No";
return $this->db->query($sql)->result();
}
如果我 select 发票详细信息 proje_ID='7',目前我得到的结果是空的 我必须在哪里更改我的 php 代码?
当我 select 一张发票(发票 no:1004)时,它会显示所有发票明细和总额 received_amount (205.00 + 40.00)。但是如果 select invoice (invoice no:1007) 正在获取空数据,因为此 1007 发票编号在第二个 table 中不存在。如果 received_amount_details table 中不存在,则仅 return 发票详细信息和总计 received_amount =0.00。 (我想显示项目 ID =2 和总计 received_amount =0.00 的发票详细信息。)
在 SQL 查询中添加 IF 条件,类似这样。
SELECT invoice_details.invoice_no,
invoice_details.invoice_date,
invoice_details.invoice_amount,
SUM(IF(received_amount_details.received_amount IS NULL
OR received_amount_details.received_amount = '', 0.0,
received_amount_details.received_amount)) AS totalreceiptamt
FROM (SELECT DISTINCT invoice_no,
received_amount
FROM received_amount_details) AS received_amount_details
right join invoice_details
ON received_amount_details.invoice_no =
invoice_details.invoice_no
WHERE invoice_details.proje_id = '7'
GROUP BY invoice_details.invoice_no
这将添加 0.0,因为默认值不是 received_amount_details.received_amount IS NULL 或空白
此外,我们正在执行右连接以从 invoice_details 页面获取所有值。
您可以在 MYSQL 此处了解有关 IF 条件的更多信息,
https://www.w3schools.com/mysql/func_mysql_if.asp https://dev.mysql.com/doc/refman/8.0/en/if.html