0

このロジックで 6 行の制限を作成したい:

  1. フレンド リスト (および同じテーブル) にある user_id を選択します。
  2. 6 人未満の場合は、別のランダム ユーザーを選択しますが、フレンド リストには含まれません (6 人まで)。
  3. 6 個の user_id がない場合は、「ダミー」のユーザー ID (ID 0) を追加します。
  4. すべての「実際の」ユーザーは異なる必要があります (id > 0)

    ID | 友達リスト | 名前
    1 2,3,5 ジョン
    2 1,7,9 マイケル
    3 1,2,5 トム
    4 3,2,6 ラリー
    

期待される結果は次のようになります(for a given user e.g. id=1)

2, 3, 4, 0, 0, 0

4

1 に答える 1

1

おそらく、データを別の方法で保存し、結合を使用して複数のテーブルからデータを選択する必要があります。ユースケースによっては、データの保存について考えられる他の方法もあります。

PEOPLE TABLE
id | name
1  | John
2  | Michael
3  | Tom
4  | Larry

PEOPLE_FRIENDS TABLE
id | person_id | friend_id
1  | 1         | 2          //In this case John is friends with Michael
2  | 3         | 1          //In this case Tom is friends with John.

次の select は、John の友達の ID を取得します。

SELECT * FROM PEOPLE `P` INNER JOIN PEOPLE_FRIENDS `PF` ON P.id = P.person_id WHERE P.id = 1

繰り返しになりますが、そのクエリを作成する方法は何百万通りもありますが、これにより、正しい方向に進むことができると思います。

于 2013-01-18T23:52:15.970 に答える