非常快速的问题!
如果表FK具有空值,那么我可以设计我的查询,以便它不会加入外键与之关联的表。我目前正在使用Left Joins。
我可以使用其他连接吗?或者我可以在使用PHP的查询中执行类似的操作吗?
if (table foreign key == NULL)
{
do not join table that foreign key points to
}
else
{
join table using foreign key value
}
由于
答案 0 :(得分:1)
你可以设置外语: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
答案 1 :(得分:1)
你可以张贴你的桌子和钥匙名字吗?然后我们可以编写查询 - 我认为它需要是一个内连接来避免空值。
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 - ;)希望能让你足够近)
答案 2 :(得分:1)
AFAIK我认为没有特定的连接可以准确地获得你想要的东西,所以你必须使用伪代码中的条件来获得这种特定的行为。
然而,LEFT JOIN在这种情况下会很好:你不必编写两个单独的查询,如果FK为null,你只需要处理一堆NULL值。