2

我有一个 Mysql 表引用、用户和关注者。

Quote(id,user_id,quote)
Users (id,username)
followers (follower,following_id)

我想要做的是获取所有引号,问题是如何对引号进行排序,以我关注的用户的引用是第一个,然后是关注我的用户的引用,然后引用其他用户

这是我的 sql 查询:

$sql='Select
    id,
    quote
FROM 
   quote
WHERE
    quote like '.$pdo->quote('%'.$item.'%');

我的意思是,如果您使用 facebook,并且您开始为您的朋友进行研究,您会发现您的朋友是第一个显示的人,然后是您可能认识的人,然后是您可能拥有的人与..等交谈

我发现在 ORDER BY 之后构建查询有问题。我也在网上寻找过这个,但我没有找到它,我想我没有为这个问题使用正确的关键字。

提前致谢。

4

2 回答 2

2

您的表格之间的关系尚不清楚。但你可以尝试这样的事情

SELECT Quote
  FROM Quote q, Users u, Followers f
  WHERE q.user_id = u.id
  AND q.user_id = f.follower
UNION
SELECT Quote
  FROM Quote q, Users u, Followers f
  WHERE q.user_id = u.id
  AND q.user_id <> f.follower
于 2013-09-17T11:30:20.023 回答
1

我认为这可以通过查询您关注的用户的报价然后是您的关注者的报价,然后是其他人的报价并加入这样的结果来完成。

SELECT A.QUOTE FROM QUOTE  A WHERE A.USER_ID IN ( SELECT B.ID FROM USER B WHERE B.USERNAME IN ( SELECT FOLLOWER FROM FOLLOWERS WHERE FOLLOWING_ID=<YOUR ID> ) )
UNION
SELECT A.QUOTE FROM QUOTE A WHERE A.ID IN 
(SELECT B.ID FROM USERS B , FOLLOWERS WHERE FOLLOWING_ID=B.ID AND B.ID=<YOUR ID>)
UNION
SELECT A.QUOTE FROM QUOTE A WHERE A.ID NOT IN
( ( SELECT B.ID FROM USERS B , FOLLOWERS WHERE FOLLOWING_ID=B.ID AND B.ID=<YOUR ID>) UNION
 (SELECT B.ID FROM USER B , FOLLOWERS WHERE FOLLOWER=B.USERNAME AND B.USERNAME=<YOUR USERNAME))

谢谢尼拉吉·拉蒂

于 2013-09-17T11:31:10.060 回答