我正在尝试使用以下代码从我的数据库输出所有相关值。出于某种原因,某些信息不应该输出,我不知道为什么。
我猜我的查询有问题?
$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;
");
答案 0 :(得分:0)
根据您的查询,以下是您没有看到所有状态的四个可能原因:
tbl_photos
,因此任何没有照片的用户都将被排除在外。tbl_users
的内部联接,因此任何与至少一个用户无关的状态(以及用户必须都有照片 - 请参阅#1)将被排除在外。tbl_photos.default_photo = '1'
进行过滤,因此任何包含tbl_photos.default_photo <> '1'
的照片都将被排除在外。由于内部联接,这也将排除关联用户并可能排除关联状态。tbl_status.deleted = '0'
进行过滤,因此将排除delete <> '0'
的所有状态。显而易见,但值得一提。尝试此操作:将INNER JOIN tbl_users
更改为LEFT JOIN tbl_users
,然后将INNER JOIN tbl_photos
更改为LEFT JOIN tbl_photos
。如果这不能提供您期望的结果,请发布样本数据和预期结果。