我在 Laravel 專案中有 3 個表
第一張表“優惠”
| ID | 客戶 | 數字報價 | id_user |
|---|---|---|---|
| 1 | 123 | 211/2022 | 11 |
| 2. | 145 | 212/2022 | 23 |
第二張表“客戶”
| ID | 姓名 | 地址 |
|---|---|---|
| 123 | 標記 | 211/2022 |
| 145 | 本 | 212/2022。 |
最后一張表“offer_items”
| ID | id_offer | 產品 | 數量 |
|---|---|---|---|
| 1 | 2 | 包 | 14.56 |
| 2 | 2 | 袋子2 | 16.50 |
并有一個查詢:
$id_user = '11';
$offers = Offer::join('clients', 'clients.id', '=', 'offers.client')
->join('offer_items','.offer_items.id_offer', '=', 'offers.id')
->selectRaw(' sum(offer_items.amount) as suma, clients.name, offers.*')
->where('offers.id_user', $id_user)
->groupBy('offer_items.id_offer')
->Orderby('offers.id_offer')
->get();
如果我在“offer_items”中有記錄,則查詢作業正常,但如果我在表中沒有記錄,則不會顯示任何內容,并且我希望顯示所有內容并且金額 = 0。
任何想法,因為昨天我一整天都在起床:(
uj5u.com熱心網友回復:
使用leftJoin而不是joinat join withoffer_items來檢索是否有記錄的資料offer_items,我還添加IFNULL了將 null 視為 0
$id_user = '11';
$offers = Offer::join('clients', 'clients.id', '=', 'offers.client')
->leftJoin('offer_items','offer_items.id_offer', '=', 'offers.id')
->selectRaw(' sum(IFNULL(offer_items.amount,0)) as suma, clients.name, offers.*')
->where('offers.id_user', $id_user)
->groupBy('offers.id')
->Orderby('offers.id')
->get();
有關不同型別連接的更多詳細資訊,Mysql IFNULL
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460349.html
上一篇:如何正確加入3個表
