0

以下のコードを使用して、データベースから関連するすべての値を出力しようとしています。なんらかの理由で、あるべき情報が出力されず、その理由がわかりません。

私のクエリに何か問題があると思いますか?

$result = mysql_query(
        "SELECT 

        tbl_status.id as statID, 
        tbl_status.from_user as statFROM, 
        tbl_status.status as statSTATUS, 
        tbl_status.deleted as statDEL, 
        tbl_status.date as statDATE,

        tbl_users.id as usrID, 
        tbl_users.name as usrNAME,

        tbl_photos.profile as photosPROFILE,
        tbl_photos.photo_link as photoLINK,
        tbl_photos.default_photo as photoDEFAULT 

        FROM tbl_status 
        INNER JOIN tbl_users ON tbl_status.from_user = tbl_users.id

        INNER JOIN tbl_photos ON tbl_photos.profile = tbl_users.id 
        WHERE tbl_status.deleted = '0' AND tbl_photos.default_photo = '1'
        ORDER BY tbl_status.date desc;

        ");
4

1 に答える 1

0

クエリに基づいて、すべてのステータスが表示されない 4 つの理由が考えられます。

  1. への内部結合を使用してtbl_photosいるため、写真を持っていないユーザーは除外されます。
  2. への内部結合を使用しているtbl_usersため、少なくとも 1 人のユーザーに関連しないステータス (ユーザーには写真が必要です - #1 を参照) は除外されます。
  3. でフィルタリングしてtbl_photos.default_photo = '1'いるため、 の写真はtbl_photos.default_photo <> '1'除外されます。内部結合のため、関連付けられたユーザーも除外され、関連付けられたステータスも除外される可能性があります。
  4. でフィルタリングしてtbl_status.deleted = '0'いるため、 のステータスはdelete <> '0'除外されます。明らかですが、言及する価値があります。

これを試してください: に変更INNER JOIN tbl_usersLEFT JOIN tbl_users、 に変更INNER JOIN tbl_photosLEFT JOIN tbl_photosます。期待した結果が得られない場合は、サンプル データと期待される結果を投稿してください。

于 2013-08-13T20:29:37.757 に答える