4

我有这张图应该可以解释我的情况我需要一些帮助来加入 3 个我不知道如何做这种事情的表:

在此处输入图像描述

所以我可以通过这样做来完成一个检索记录的while循环:

<img src="<?php echo $row['filename']; ?>" alt="" />

Album: <?php echo $row['album_name']; ?> 
AlbumID: <?php echo $row['album_id']; ?>
4

4 回答 4

6

使用INNER JOIN将防止返回没有图像的相册。ORDER BY ... DESC将按降序对结果进行排序,但我不确定如何只返回最后一条记录。也许需要 ORDER BY、 GROUP BYTOP的某种组合。

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
于 2011-03-22T19:41:27.110 回答
0

我相信INNER JOIN你正在寻找

这个网站提供了一个很好的例子

http://www.w3schools.com/sql/sql_join_inner.asp

于 2011-03-22T19:30:20.003 回答
0

@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如果您想返回所有用户的信息,您可以完全忽略该子句。

于 2011-03-22T19:36:56.617 回答
0

实际上,在这种情况下,您只需要连接两个表(一般来说,连接越少越好)。

由于您知道用户 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
于 2011-03-22T19:42:22.143 回答