gpt4 book ai didi

php - MySQL 搜索不同的表并只获取特定的 ID

转载 作者:行者123 更新时间:2023-11-29 00:26:22 25 4
gpt4 key购买 nike

我正在尝试创建一种算法来为特定 user_id 整理出最相关的数据。

我想我的最终结果是一个数组,其中 KEY 作为找到的 USER_ID,VALUE 是在不同行中找到特定 USER_ID 的次数。

因此,我需要查看不同表中的不同行并查找 CURRENT_USER_ID(比如说 id:30)存在的位置,然后找到 RECIEVER_ID,即与之通信的用户。这很难解释,但让我们举个例子:

  • 我有一个名为:edu_posts 的表,其中包含墙报和给这些人的评论。该表中有不同的值,但我们应该关注的是:post_author 和 post_reciever。然后我们必须查找 post_author 等于 30 的所有行(测试示例;只需要是当前用户 ID),然后打印出 post_reciever IDS。这对于单个查询来说已经很容易了,但是假设我们必须在 5 个或 10 个不同的表中查找数据,即 10 个不同的查询,这是很多的。
  • 我们还有一个名为 edu_followers 的表。在那里我们必须寻找 follow_author 等于 30 的位置(测试示例;只需为当前用户 ID),然后打印出 follow_user ID。同样,找出当前用户对谁感兴趣。

我将最终的 mysql_fetch 想象成这样:

user_id => 25
times_found => 5
user_id => 11
times_found => 3
user_id => 95
times_found => 1

等等

这可以使用单个查询来完成吗,也许使用 JOIN?甚至可能计算查询中的结果,所以我不必在 PHP 代码中手动执行此操作。

或者我应该为我希望从中获取数据的每个表创建一个 mysql_query,然后使用 PHP 管理数据?这对我来说听起来是最简单的方法,但也是与脚本优化相关的最低效的方法。

我尝试了以下测试查询:

SELECT
u.user_id AS user_id,
f.follow_user AS user_id_follow,
p.post_reciever AS user_id_posts
FROM
`edu_posts` u
LEFT JOIN `edu_followers` f ON f.follow_author = '30'
LEFT JOIN `edu_posts` p ON p.post_author = '30' && p.post_reciever != '30'
WHERE
u.user_id = '30'
GROUP BY
f.follow_id, p.post_id

但问题是它会输出无异常(exception)的结果,而且我会寻找不同的值,fx: user_id(不是真的需要,因为我们已经知道它是 30)、user_id_follow、user_id_posts 等等。

希望您理解我的问题,如果您需要更多信息,请告诉我。

非常感谢!

最佳答案

您可以创建要搜索的所有表的联合 View ,具体取决于您的具体要求,您可能只需要查询一次。

例如

create view allPostTypesUnion as
select user_id, post_receiver
from edu_posts
union
select user_id, post_receiver
from different_edu_posts
union
select user_id, post_receiver
from another_different_edu_posts

然后:

select post_receiver, count(*)
from allPostTypes
group by post_receiver

关于php - MySQL 搜索不同的表并只获取特定的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18716233/

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