我正在使用PHP和MySQL创建博客。对于搜索引擎,我需要一种限制MySQL结果的方法,以便只返回带有图像的帖子。帖子和图片之间存在一对多的关系。
这是数据库结构:
Posts
:
PostID
(PK),
userid
(FK),
Post_timestamp
Post_timestamp是使用PHP中的time()函数计算的。
Images
:
ImageID
(PK),
PostID
(FK),
ImageType
,
Image
这是我到目前为止的查询,但是存在语法错误:
SELECT
DISTINCT Post.PostID, Images.ImageID, Images.PostID, Post.Post_timestamp
WHERE
Post.PostID = Images.PostID
ORDER BY
Post.Post_timestamp DESC
LIMIT
1,5;
我使用限制分页;我想每页五个结果。如果在图像表中也找到了所述Post.PostID
,则结果表应显示postID
(不同)。
答案 0 :(得分:2)
你忘记了条款
SELECT
DISTINCT Post.PostID, Image.ImageID, Image.PostID, Post.Post_timestamp
from
Posts Post,Images Image
WHERE
Post.PostID = Image.PostID
ORDER BY
Post.Post_timestamp DESC
LIMIT
1,5;
<强>更新强>
SELECT
Post.PostID, Image.ImageID, Image.PostID, Post.Post_timestamp
from
Posts Post,Images Image
WHERE
Post.PostID = Image.PostID
GROUP BY
Post.PostID
ORDER BY
Post.Post_timestamp DESC
LIMIT
1,5;
使用分组
答案 1 :(得分:1)
SELECT
P.PostID, I.ImageID, I.PostID, P.Post_timestamp
FROM
Posts P
INNER JOIN Images I ON P.PostID = I.PostID
GROUP BY
P.PostID
ORDER BY
P.Post_timestamp DESC
LIMIT
1,5;