繁体   English   中英

INNER JOIN跳过多表查询的一些结果

[英]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。 它将为丢失的数据添加NULL而不是将其丢弃

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM