加入3个三桌

时间:2011-03-22 19:28:13

标签: php mysql sql join jointable

我有这个图表应该解释我的情况我需要一些帮助才能加入3个表格,我不知道怎么做这样的事情:

enter image description here

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

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我相信你正在寻找INNER JOIN

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

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

答案 2 :(得分: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子句。

答案 3 :(得分: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