我正在尝试编写一个查看四个表并提取所有相关数据的查询。我的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而不是跳过它?
答案 0 :(得分:6)
尝试使用LEFT JOIN
代替INNER JOIN
,'the LEFT JOIN keyword returns all rows from the left table (table_name1), even if there are no matches in the right table (table_name2).'
答案 1 :(得分:3)
改为使用LEFT JOIN。它将为丢失的数据添加NULL而不是丢弃它