[英]INNER JOIN skipping some results on multi-table query
我正在尝试编写一个查询,该查询通过四个表查找并提取所有相关数据。 我的get_phocadownload_user_stat表跟踪在我的网站上进行的每次下载。 无论是否丢失后续表中每次下载的数据,我都需要显示所有这些信息。 问题是查询只是获取我查询的每个数据段中都有结果的数据。 IE,如果没有下载用户下载内容的用户的user_ip.ip_address结果,则根本不会显示下载信息。 理想情况下,我希望在查询结束时执行以下操作:
if($result['ip_address'] == '' || $result['ip_address'] == NULL){
print "N/A";
}
这是我的查询字符串:
$string = "SELECT get_phocadownload_user_stat.fileid, get_phocadownload_user_stat.count, get_phocadownload_user_stat.date, get_users.name, get_users.username, get_users.email, get_phocadownload.filename, user_ip.ip_address, user_ip.location
FROM get_phocadownload_user_stat
INNER JOIN get_users ON get_phocadownload_user_stat.userid = get_users.id
INNER JOIN get_phocadownload ON get_phocadownload_user_stat.fileid = get_phocadownload.id
INNER JOIN user_ip ON get_users.username = user_ip.username
ORDER BY get_phocadownload_user_stat.date DESC";
有没有一种简单的方法可以告诉查询结果是否不可用,只需将其默认设置为NULL而不是跳过它即可?
尝试使用LEFT JOIN
代替INNER JOIN
,因为“即使右侧表(table_name2)中没有匹配项,LEFT JOIN关键字也会返回左侧表(table_name1)中的所有行。”
请改用LEFT JOIN。 它将为丢失的数据添加NULL而不是将其丢弃
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.