gpt4 book ai didi

php - 在 PHP 中连接条件查询,同时尝试从多个表中获取行

转载 作者:行者123 更新时间:2023-11-29 06:09:22 24 4
gpt4 key购买 nike

我的社交网络插件有一个非常大的问题。在我的 PHP 脚本中,我使用条件语句 (if/else) 连接 SQL Where 查询,因为使用相同的函数我正在获取搜索栏和配置文件本身的帖子。

因此,我无法更改主要声明。

我正在开发一个 Mention 系统,就像 Facebook 的一样:当用户在自己的个人资料上标记某人时,该帖子也应该显示在被标记用户的个人资料上。

为此,我正在编辑获取帖子的函数,但不知道如何编写查询。

让我们看看场景:

我有两个表,一个用于帖子,另一个用于链接到帖子表的提及。

表:帖子(user_id 是发布者,in_user_id 是发布帖子的个人资料)

+---------+----------+------------+------------+------------+
| post_id | user_id | in_user_id | in_group | updated_at |
+---------+----------+------------+------------+------------+
| 1 | 12 | 12 | 0 | some_text |
| 2 | 1 | 1 | 0 | some_text2 |
| 3 | 2 | 2 | 0 | some_text3 |
| 4 | 5 | 12 | 0 | some_text4 |
| 5 | 5 | 5 | 0 | some_text4 |
| 6 | 5 | 5 | 0 | some_text4 |
+---------+----------+------------+------------+------------+

表:posts_mentions(post_id 是包含提及的帖子,user_id 是被提及的用户)

+---------+----------+
| post_id | user_id |
+---------+----------+
| 2 | 12 |
| 3 | 12 |
| 6 | 1 |
+---------+----------+

我需要:在查看 user_id 12 的个人资料时,我需要获取在 12 的个人资料上发布的帖子的 post_id(posts.post_id 1 和 4),以及标记 user_id 12 的帖子(posts.post_id 2 和 3),这列在 posts_mentions 上。

我尝试过的:

实际代码是这样的(这是一个例子):

$where="";

if($user_id->isFriend())
{
$where .= "WHERE (in_user_id = $user_id AND in_group = '0')";
}

...

$posts = $db->query(sprintf
("SELECT
*
FROM (SELECT posts.post_id
FROM posts ".$where.") posts
ORDER BY posts.post_id DESC");

(我使用了子查询,否则我无法使用条件串联查询)

我试图在 $where 语句中添加另一个子查询,但它根本不起作用。

我真的快疯了。我该如何解决这个问题?

最佳答案

您可以添加一个子查询以从 post_mentions 表中获取 post_id。像这样的东西:

$where .= "WHERE (in_user_id = $user_id AND in_group = '0')
OR post_id IN (
SELECT post_id FROM posts_mentions
WHERE user_id = $user_id
)
";

关于php - 在 PHP 中连接条件查询,同时尝试从多个表中获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39279995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com