0

我正在尝试编写一个查询来查看四个表并提取所有相关数据。我的 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 而不是跳过它?

4

2 回答 2

6

尝试使用 aLEFT JOIN而不是INNER JOIN,因为“LEFT JOIN 关键字会返回左表 (table_name1) 中的所有行,即使右表 (table_name2) 中没有匹配项。”

于 2012-12-06T15:43:08.850 回答
3

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

于 2012-12-06T15:44:05.653 回答