0

4 つのテーブルを調べて、関連するすべてのデータを取得するクエリを作成しようとしています。私の 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

LEFT JOIN キーワードは、右側のテーブル (table_name2) に一致するものがなくても、左側のテーブル (table_name1) からすべての行を返すため、のLEFT JOIN代わりに を使用してみてください。INNER JOIN

于 2012-12-06T15:43:08.850 に答える
3

代わりに LEFT JOIN を使用してください。欠落しているデータを破棄するのではなく、NULL を追加します。

于 2012-12-06T15:44:05.653 に答える