Php 哪种联接或查询方法是可能的?问个简单的问题?

Php 哪种联接或查询方法是可能的?问个简单的问题?,php,mysql,codeigniter,activerecord,Php,Mysql,Codeigniter,Activerecord,很快的问题 如果一个表FK有一个空值,我有什么方法可以设计我的查询,这样它就不用麻烦加入外键关联的表了。我目前正在使用左连接 我是否可以使用另一个连接,或者可以在使用PHP的查询中执行类似的操作 if (table foreign key == NULL) { do not join table that foreign key points to } else { join table using foreign key value } 谢谢您可以设置foreign:k

很快的问题

如果一个表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
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-;)希望这能让你足够接近)

好吧,我认为没有特定的连接来精确地获得你想要的,所以你必须使用伪代码中的条件来获得这种特定行为


但是,在这种情况下,左连接就可以了:不必编写两个单独的查询,如果FK为NULL,则只需处理一堆NULL值。

我可以做得更好,这是我的模式,带外键的表是“procedure”,我希望连接或不连接的表是“dose”好的,谢谢,但现在这个查询不返回记录,我希望它仍然返回记录,但无论有没有剂量,我想你失去了我们:)-你可以做一个左外,但你将有一个空处理。为什么这会给你带来问题?基本上我现在使用的方法包含剂量表中的值,即使它们为空,我希望mySQL中有一种方法可以忽略剂量,因为我的数据库中没有匹配的行,因此,当我的数据显示在我的网页中时,我不会得到我不关心的空值:)谢谢,“过程”是一个表,该列称为“剂量id”,该表是我要加入的“剂量”。谢谢,但现在如果“剂量id”为空,查询不会返回记录,因此,我无法从我的表中获取任何其他数据。我尝试了内部联接,也许我无法控制接收到的数据。我想我可以在结果中忽略它,而不在页面上显示它。谢谢你的努力
SELECT *, CASE dosage_id
WHEN (dosage_id IS NULL) THEN ''
END
from procedure
inner join dosage on dosage.dosage_id = procedure.dosage_id