我有两张桌子:post,post_image
我目前正试图加入他们:
$sql = 'SELECT post.*, post_image.name AS img FROM post, post_image
WHERE post_image.postId=post.id LIMIT 10';
这是我的问题。有些帖子在post_image中没有任何条目,但我仍然需要它们返回。我知道mysql可以检查null,但是我不知道如果那是解决方案,它会在我的语句中出现在哪里。我也不完全确定我能用我正在使用的速记连接来做到这一点。
请帮助:)
编辑:
现在正在按预期工作,但我还需要确保它只使用字段ordinal = 0拉取post_image,因为可以有多个post_image条目。我尝试添加一个WHERE子句,它似乎只用图片来拉帖子。这就是我所拥有的:
SELECT post.*, post_image.name AS img FROM post LEFT JOIN post_image ON post_image.postId=post.id WHERE post_image.ordinal=0 LIMIT 10
答案 0 :(得分:5)
像这样使用LEFT JOIN
:
SELECT
post.*,
post_image.name AS img
FROM post
LEFT JOIN post_image ON post_image.postId = post.id
LIMIT 10;
您的查询是INNER JOIN
两个表使用旧的连接语法,该语法使用WHERE
子句指定连接条件。最好在将来的查询中使用JOIN
条件来使用显式INNER JOIN
语法。
了解更多信息:
答案 1 :(得分:1)
如何使用LEFT JOIN
?我认为它会显示帖子,虽然它没有图像。
SELECT * FROM post p LEFT JOIN post_image pi ON p.id = pi.postId