gpt4 book ai didi

php - 使用 JOINING 表创建 mysql 查询语法

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:23 25 4
gpt4 key购买 nike

我在获取一些数据时遇到问题....我想知道是否有人可以帮助我,

我有 4 个表(点赞、关注、评论、用户)

我希望能够在用户喜欢/评论/关注/等等时填充我的页面...(如果用户正在关注特定用户)。

喜欢

idlikes   idusers    iditem
1 1 5
2 2 4
3 2 22

关注

idfollow   idusers_follower   idusers    idbusiness
1 1 2
2 1 3
3 1 4
4 4 2
5 4 1

评论

idcomments   idusers    text
1 1 asfd
2 2 safd

用户

idusers
1
2
3
4

例如,如果我是 id 用户 #1,我正在关注用户 #2、#3、#4

我的页面将填充以显示:

  • #2 喜欢项目 #4,#22。
  • #4 在#2 之后(因为我在#4 之后,这就是它显示的原因)
  • #2 条评论“safd”

我不确定显示此内容的最佳方式是什么?我目前有多个函数同时查询表,我正在努力将数组合并在一起?还是我应该使用连接表?我现在正在尝试...

获取我关注的用户。

$feeds = new feed();
$meID = 1;
$query = "SELECT idusers FROM follow WHERE iduserse_follower = ?";

$users = $dbh -> prepare($query);
$users -> execute(array($meID));

while($following = $users -> fetch(PDO::FETCH_ASSOC)){
$follow = $following['idusers']; //This will get all of useres I'm following
$populate = $feeds->feed_all($follow); // from function
}

查询

class feed()
{
public function feed_all($idusers)
{
// SYNTAX HELP //////////////////////
$query = "SELECT
f.idusers_follower,
f.idusers,
l.iditem,
c.text
FROM follow f, users u
JOIN likes l
ON l.idusers = f.idusers
JOIN comment c
ON c.idusers = f.idusers
WHERE f.idusers_follower = ? AND f.idusers_follower = l.idusers AND f.idusers_follower = c.idusers AND f.idusers = u.idusers"

$pop = $dbh->prepare($query);
$pop ->execute($idusers);

// while loop to return value
while($row = $pop -> fetch(PDO::FETCH_ASSOC))
{
$feed_data[]=$row;
}
return $feed_data;
}
}

这就是我卡住的地方。 :( 我什至不确定我的陈述是否正确?

++++++++++ 编辑:++++++++++++

我已编辑以添加 idbusiness

既然我关注了#4,它也会显示#4 关注#1。

最佳答案

您当前执行三个独立查询的方法与其他方法一样好;您可以使用 UNION 将它们组合成一个结果集,如果您想按某些字段(例如事件时间戳)对组合结果进行排序和/或限制组合结果,这将很有用:

  SELECT idusers, 'likes' AS what, likes.iditem AS detail
FROM likes JOIN follow USING (idusers)
WHERE follow.idusers_follower = 1

UNION ALL

SELECT f1.idusers, 'follows', f2.idusers
FROM follow f1 JOIN follow f2 ON f1.idusers = f2.idusers_follower
WHERE f1.idusers_follower = 1

UNION ALL

SELECT idusers, 'commented', comment.text
FROM comment JOIN follow USING (idusers)
WHERE follow.idusers_follower = 1

查看sqlfiddle .

关于php - 使用 JOINING 表创建 mysql 查询语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12254405/

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