我正在尝试使用下面的代码从数据库中输出所有相关值。由于某种原因,一些应该输出的信息没有输出,我不知道为什么。
我猜我的查询有问题?
$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;
");
最佳答案
根据您的查询,您看不到所有状态的可能有以下四种原因:
- 您正在使用内部联接
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
。如果这没有给您带来预期的结果,请发布示例数据和预期结果。
关于mysql - 查询未从数据库输出所有相关结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18218283/