[英]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.