簡體   English   中英

將sql查詢組合在一起

[英]Combining sql queries together

我正在嘗試簡化我當前的查詢代碼。 有沒有一種更簡單的方法將兩個查詢合並為一個?

這是我迄今為止嘗試過的。 雖然它看起來真的很凌亂和笨重。 此查詢請求所有客戶端

SELECT * FROM clients ORDER BY name DESC

然后我在里面有另一個請求,以查看客戶是否有預訂

SELECT * FROM bookings WHERE client_id=$client_id AND done=0

Done 表示作業是否完成,並且每個客戶端一次只能有 1 個未完成的作業。

解釋:

代碼需要顯示所有客戶,如果客戶有預訂並且其他數據庫返回結果,則不會出現預訂按鈕,如果沒有結果(即該客戶之前的所有預訂都是 1),則預訂按鈕出現。

如果你只想要一個標志,那么你可以使用EXISTS

SELECT c.*, 
       (EXISTS (SELECT 1
                FROM bookings b
                WHERE ON c.client_id = b.client_id AND b.done = 0
               )
       ) as has_booking
FROM clients c ;

我想你想要:

select c.*, coalesce(b.done, 1) completed
from clients c
left join bookings b on b.client_id = c.client_id and b.done = 0

這會嘗試為每個客戶在booking找到一個未完成的行。 completed在結果中包含0 ,如果客戶有未完成行,否則1

SELECT clients.*, bookings.done
FROM clients
LEFT JOIN bookings ON bookings.client_id = clients.client_id
AND b.done = 0

有了上面的結果,你可以在你的視圖中添加一個條件

if(done == 0){
     show button code
}

暫無
暫無

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

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