首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三个表的内连接

问三个表的内连接
EN

Stack Overflow用户
提问于 2013-03-19 06:13:17
回答 3查看 4.2K关注 0票数 3

我正在使用PHP和PDO,我需要恢复连接3个表的信息:

  • 照片
  • 相册
  • album_photos

该表的结构如下:

照片:

代码语言:javascript
复制
photo_id  (int)
path      (varchar)
nick      (varchar)
date      (timestamp)

相册

代码语言:javascript
复制
album_id   (int)
album_name (varchar)
nick       (varchar)
date       (timestamp)

album_photos

代码语言:javascript
复制
album_id (int)
photo_id (int)
nick     (varchar)
date     (timestamp)

所以,我想显示所有的相册,每一张最多5张照片,,其中用户尼克是‘所有者’。

如下所示:

代码语言:javascript
复制
album_name_1:
[photo_1]
[photo_2]
[photo_3]
[photo_4]
[photo_5]

album_name_2:
[photo_1]
[photo_2]
[photo_3]
[photo_4]
[photo_5]

我只知道这样的东西可以用内部连接来制作,但是我找不到如何用3张桌子来制作它。

有例子或其他帮助,我可以做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-19 06:32:29

代码语言:javascript
复制
SELECT  a.*, c.date
FROM    Album a
        INNER JOIN Album_Photo b
            ON a.Album_ID = b.Album_ID
        INNER JOIN Photo c
            ON b.Photo_ID = c.Photo_ID
WHERE   c.Nick = 'owner' AND
        (
          SELECT COUNT(*) 
          FROM   album_photo d
          WHERE  b.album_id = d.album_id AND
                 d.nick = 'owner' AND
                 b.date >= d.date
        ) <= 2   // <<== change this value to 5
票数 2
EN

Stack Overflow用户

发布于 2013-03-19 06:23:33

试着像

代码语言:javascript
复制
"SELECT albums.*,photos.id,photos.path,photo_date as Pht_date
 FROM albums 
     JOIN album_photos 
          ON album_photos.album_id = albums.album_id
     JOIN photos 
          ON photos.photos_id = album_photos_id
"

但是,如果照片涉及到“加入”的话,你不能给出个人的限制,你需要给出的个人照片就像

代码语言:javascript
复制
$album_ids = "SELECT album_id FROM albums";

然后,对于需要编写查询库的照片

代码语言:javascript
复制
"SELECT photos.* FROM photos 
 WHERE album_photos.album_id in (".$album_ids.") AND album_photos.nick = 'owner'
 JOIN album_photos
 ON album_photos.photo_id = photos.photos_id 
 LIMIT 0,10
 "
票数 1
EN

Stack Overflow用户

发布于 2013-03-19 06:34:57

我认为这可以通过存储过程来解决。使用变量和环,您可以检索所需的记录。当您只使用基本SQL命令时,从相册中获取最多5条记录是非常困难的。有时,您无法导出正确的记录。我建议你使用存储的Proc。:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15492646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档