从不同的表,子查询或联接中选择

时间:2015-06-06 15:18:35

标签: php mysql join subquery

我有两张桌子;我需要做的是选择给定用户的评论。我需要cid和标题作为结果

posts
pid | heading | body   | username
1     smth....  smth..   u1
2     smth....  smth..   u2

帖子

cid | body   | username
1     smth..   u1
2     smth..   u2

我曾尝试使用JOINS,主要是INNER。但答案是错误的。然后我再次尝试使用子查询答案是错误的,但这次它的答案与以前不同。现在我正在尝试将INNER JOINS与子查询一起使用。我不知道那是否可能。

我尝试过的一些SQL;因为我尝试的东西太多,所以我不会发布所有内容。

SELECT `comment_id`, `post`.`post_id`, `friendly_url`, `heading` FROM `post`,`comments` WHERE `post`.`post_id` IN (SELECT `comments`.`post_id` FROM `comments` WHERE `username` = ?)

SELECT `post`.`post_id`, `friendly_url`, `heading` FROM `post`INNER JOIN `comments` ON `post`.`post_id`= `comments`.`post_id` WHERE `post`.`post_id` IN (SELECT `comments`.`post_id` FROM `comments` WHERE `username` = 'chichi')

1 个答案:

答案 0 :(得分:1)

根据您发布的查询,看起来表格中存在关系

`post`.`post_id` = `comments`.`post_id`

因此,您可以尝试使用INNER JOIN之类的

SELECT c.`comment_id`, p.`post_id`, c.`friendly_url`, c.`heading` 
FROM `post` p JOIN `comments` c ON p.`post_id` = c.`post_id` 
WHERE `username` = 'u1'