查询不从数据库输出所有相关结果

时间:2013-08-13 20:07:41

标签: mysql sql database

我正在尝试使用以下代码从我的数据库输出所有相关值。出于某种原因,某些信息不应该输出,我不知道为什么。

我猜我的查询有问题?

$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;

        ");

1 个答案:

答案 0 :(得分:0)

根据您的查询,以下是您没有看到所有状态的四个可能原因:

  1. 您正在使用内部联接tbl_photos,因此任何没有照片的用户都将被排除在外。
  2. 您正在使用tbl_users的内部联接,因此任何与至少一个用户无关的状态(以及用户必须都有照片 - 请参阅#1)将被排除在外。
  3. 您正在对tbl_photos.default_photo = '1'进行过滤,因此任何包含tbl_photos.default_photo <> '1'的照片都将被排除在外。由于内部联接,这也将排除关联用户并可能排除关联状态。
  4. 您正在对tbl_status.deleted = '0'进行过滤,因此将排除delete <> '0'的所有状态。显而易见,但值得一提。
  5. 尝试此操作:将INNER JOIN tbl_users更改为LEFT JOIN tbl_users,然后将INNER JOIN tbl_photos更改为LEFT JOIN tbl_photos。如果这不能提供您期望的结果,请发布样本数据和预期结果。