[英]MYSQL - JOIN the 1 table or the other table depending if there is a match
我有一個稱為events
的表,正在對此表進行選擇以顯示帶有選擇結果的網格。
events
表中有一列稱為s_code
。 s_code
值來自suppliers
表或members
表。
我將如何執行單個JOIN
檢查suppliers
和members
表以獲取代碼的名稱,而不必像下面的查詢那樣對members
和suppliers
表都進行LEFT JOIN
。 基本上,我只想擁有b.s_name
,而此時我同時擁有b.s_name
和c.s_name
。
SELECT a.s_id, b.s_name, c.s_name, a.s_date,
a.s_description, d.s_name, a.s_actiondate,
e.s_name, a.s_emailed, a.s_status
FROM events AS a
LEFT JOIN members AS b ON a.s_code = b.s_code
LEFT JOIN suppliers AS c ON a.s_code = c.s_code
LEFT JOIN webuser AS d ON a.s_userid = d.s_ai
LEFT JOIN webuser AS e ON a.s_actionuserid = e.s_ai
WHERE a.s_status = 'A'
AND a.s_userid = '1'
AND a.s_transactionstatus = 'A'
剛剛凝聚的兩列進一個,如果第一個是非零回報,否則第二;
SELECT a.s_id, COALESCE(b.s_name, c.s_name) s_name, a.s_date, ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.