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 に答える