连接MySQL中条件不为空的表

时间:2013-12-15 11:53:59

标签: php mysql

我正在使用PHP和MySQL创建博客。对于搜索引擎,我需要一种限制MySQL结果的方法,以便只返回带有图像的帖子。帖子和图片之间存在一对多的关系。

这是数据库结构:

PostsPostID(PK), userid(FK), Post_timestamp

Post_timestamp是使用PHP中的time()函数计算的。

ImagesImageID(PK), PostID(FK), ImageTypeImage

这是我到目前为止的查询,但是存在语法错误:

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(不同)。

2 个答案:

答案 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;