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

时间:2012-12-06 15:41:51

标签: php mysql join

我正在尝试编写一个查看四个表并提取所有相关数据的查询。我的get_phocadownload_user_stat表跟踪我网站上的每次下载。无论后续表中每次下载的数据是否丢失,我都需要显示所有这些内容。问题是查询只是抓取我查询的每个数据块中都有结果的数据。如果对于下载了下载信息的用户根本没有显示user_ip.ip_address的结果,则IE为IE。理想情况下,我希望在查询结束时执行以下操作:

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而不是跳过它?

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:3)

改为使用LEFT JOIN。它将为丢失的数据添加NULL而不是丢弃它