簡體   English   中英

哪種連接或查詢方法是可能的? MYSQL快速問題?

[英]Which join or query method would be possible? MYSQL Quick Question?

很快的問題!

如果表FK的值為空,則可以使用任何方法設計查詢,以免麻煩地聯接與外鍵關聯的表。 我目前正在使用左聯接。

我可以使用另一個聯接嗎?還是可以在使用PHP的查詢中執行類似的操作?

if (table foreign key == NULL) 
{   
do not join table that foreign key points to 
}

else 
{   
join table using foreign key value 
}

謝謝

您可以設置以下子句:我認為foreign:key不為null(希望我正確理解):

SELECT * 
FROM
procedure
LEFT JOIN dosage ON dosage.dosage_id= procedure.dosage_id
WHERE 
dosage.dosage_id is not null

但我認為這等同於使用內部聯接

SELECT * 
FROM
procedure
INNER JOIN dosage ON dosage.dosage_id = procedure.dosage_id

您可以張貼表格和鍵名嗎? 然后我們可以編寫查詢-我認為它必須是一個內部聯接,以避免空值。

select * from table1
inner join table2
on table1.pk = table2.fk
where {your conditions}

對於您的架構

select * from procedure
inner join dosage on dosage.dosage_id = procedure.dosage_id

為什么不使用CASE語句處理NULL並推送一個空字符串呢?

SELECT *, CASE dosage_id
WHEN (dosage_id IS NULL) THEN ''
END
from procedure
inner join dosage on dosage.dosage_id = procedure.dosage_id

(注意:我不是CASE最好的-;)希望可以使您足夠接近)

AFAIK我認為沒有特定的聯接可以精確地獲得所需的內容,因此必須使用偽代碼中的條件才能獲得這種特定的行為。

但是,在這種情況下,LEFT JOIN很好:您不必編寫兩個單獨的查詢,並且如果FK為null,則只需要處理一堆NULL值。

暫無
暫無

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

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