簡體   English   中英

我想在第一張表中獲取不在第二張表中的行

[英]I want to fetch rows in a first table that are not in a second table

我有一個表,我們稱它為“ fees ,還有另外兩個表,我們稱它們為“ transactionsbreakdowns

transactions表保存收到的付款的一般摘要, breakdowns保存付款的明細。

故障表看起來像這樣

id | transaction_id | fee_id

和費用表看起來像這樣

id | amount | description

我想根據Transactions_id在費用明細表中獲取沒有明細表中記錄的費用

SELECT * FROM fees LEFT JOIN breakdowns ON (fees.id = breakdowns.fee_id) 
WHERE breakdowns.transaction_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

上面的代碼返回空行

使用not exists

SELECT f.*
FROM fees f
WHERE NOT EXISTS (SELECT 1
                  FROM breakdowns b
                  WHERE b.fee_id = f.id AND
                        b.transaction_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
                 );

您也可以使用LEFT JOIN ,將breakdowns條件移至ON子句:

SELECT *
FROM fees f LEFT JOIN
     breakdowns b
     ON b.fee_id = f.id AND  
        b.transaction_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

但是,我認為NOT EXISTS更直接地捕獲您想要的邏輯。 另外,我認為沒有理由為breakdowns的列返回NULL值。

嘗試這個

$data['showrecord'] = DB::table('fees')
           ->where('breakdown.transaction_id',"=",'xxxxx')
           ->leftjoin('breakdown', 'breakdown.fee_id', '=', 'fees.id')
           ->get();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM