0

我是 mysql 新手,从 mysql 数据库中选择数据时遇到问题:

$post_id = 3;
$current_user_id = 1;

$query = "SELECT `comments`.*, `users`.`username`, `users`.`image` FROM (`comments`)
LEFT JOIN `users` ON `comments`.`user_id` = `users`.`id`
WHERE `comments`.`post_id` =  '$post_id'
AND `comments`.`status` =  1
AND `users`.`status` =  1
ORDER BY `comments`.`date` desc";

此选择,从数据库中选择所有已批准的评论,而且,在此选择中,我需要 $current_user_id 的所有未批准评论,

结果必须如下所示:

[所有已批准的帖子评论] + [$current_user_id 的所有未批准的帖子评论]

4

2 回答 2

2

不确定这是否真的有效,但试试看。我无法测试查询,因为我们没有架构。

SELECT `comments`.*, `users`.`username`, `users`.`image` FROM (`comments`)
LEFT JOIN `users` ON `comments`.`user_id` = `users`.`id`
WHERE `comments`.`post_id` =  '$post_id'
AND (
   (`comments`.`status` =  1 AND `users`.`status` =  1)
  OR
   ( `comments`.`status` =  0 AND `users`.`id`= '$current_user_id' )
)
ORDER BY `comments`.`date` desc

我的想法是选择所有approved commentsOR(未批准的评论,但来自该用户)。您可能必须更改查询,直到获得您真正需要的内容,我只是给您一个想法,而不是确切的查询。希望这会帮助你。

于 2013-07-27T01:12:09.330 回答
1
SELECT `comments`.*, `users`.`username`, `users`.`image` FROM (`comments`)
LEFT JOIN `users` ON `comments`.`user_id` = `users`.`id`
WHERE `comments`.`post_id` =  '$post_id'
AND `comments`.`status` =  1
AND `users`.`status` =  1
UNION ALL
SELECT `comments`.*, `users`.`username`, `users`.`image` FROM (`comments`)
LEFT JOIN `users` ON `comments`.`user_id` = `users`.`id`
WHERE `comments`.`post_id` =  '$post_id'
AND `comments`.`status` =  0
AND `users`.`id` = '$current_user_id'
ORDER BY `comments`.`date` desc
于 2013-07-27T00:57:50.057 回答