我有这张图应该可以解释我的情况我需要一些帮助来加入 3 个我不知道如何做这种事情的表:
所以我可以通过这样做来完成一个检索记录的while循环:
<img src="<?php echo $row['filename']; ?>" alt="" />
Album: <?php echo $row['album_name']; ?>
AlbumID: <?php echo $row['album_id']; ?>
使用INNER JOIN将防止返回没有图像的相册。ORDER BY ... DESC将按降序对结果进行排序,但我不确定如何只返回最后一条记录。也许需要 ORDER BY、 GROUP BY和TOP的某种组合。
SELECT
album_table.album_id,
album_table.album_name,
images_table.filename
FROM album_table
INNER JOIN images_table ON images_table.album_id = album_table.album_id
WHERE album_table.user_id = uid
ORDER BY images_table.date DESC
@lolwut:试试——
SELECT
album_table.album_id, album_table.album_name, images_table.filename
FROM album_table
INNER JOIN images_table ON images_table.album_id = album_table.album_id
INNER JOIN users_table ON users_table.uid = album_table.user_id
WHERE (users_table.uid = ' . $uid . ')
ORDER BY images_table.date DESC
$uid
应该是当前登录用户的会话...或者WHERE
如果您想返回所有用户的信息,您可以完全忽略该子句。
实际上,在这种情况下,您只需要连接两个表(一般来说,连接越少越好)。
由于您知道用户 ID,因此可以直接从专辑表名称中查询。
如果您的 users_table 碰巧有另一列“user_name”,并且您想搜索它,那么您需要加入 users 表。
SELECT filename, album_name, album_id
FROM album_table at, images_table it
AND at.album_id = it.album_id
AND at.user_id = $user_id