0

この質問は以前どこかで尋ねられたかもしれませんが、とにかく私はそれを見つけることができませんでした。

だから私は多くのコメントを持っているビデオレコードを持っています、各コメントはユーザーに属しています。一方、ユーザーには多くのユーザーフレンドがいます。

ここで、ユーザーXがサインインしてビデオを表示するとき、YIは最初に友人のコメントを表示したいと思います(最新の順序で)。次に、最新のものから順に並べられた他のコメントをリストします。

可能であれば、このロジックを1つのクエリで作成したいと思います。

ありがとう、

4

3 に答える 3

2

ORDER BYで、次のようにします。私はあなたのスキーマがどのように見えるかを知っているので、このクエリは機能しないことを知っておいてください。ただし、ユーザーが友達であるかどうかを示す1/0値を作成し、最初にそれで並べ替え、次に投稿/コメントIDで並べ替えるだけです。

SELECT
    posting.id,
    IF(a.friend_id = b.criteria, 1, 0) AS is_friend
...
ORDER BY is_friend DESC, posting.id DESC
于 2012-05-07T04:10:05.270 に答える
2

これはどう

Select comment of friends of X on video Y order by date
Union
Select comment on video Y where they is not friend of X order by date
于 2012-05-07T04:10:36.367 に答える
0

UNIONを使用します。

(
  SELECT 1 AS sort,*
  FROM comments
  INNER JOIN friends ON comments.poster_id=friends.friend_id
  WHERE friends.id='123'
)
UNION
(
  SELECT 2 AS sort,*
  FROM comments
  WHERE poster_id NOT IN(SELECT friend_id FROM friend WHERE id='123')
)
ORDER BY sort,time DESC
于 2012-05-07T04:13:10.020 に答える