このテーブルの選択を作成しようとしていますが、奇妙な結果が得られます。私のテーブル:
tbl_main
–––––––––––––––––-
id user_id name
tbl_friends
–––––––––––––––––-
id user_id main_id people
tbl_cats
–––––––––––––––––-
id user_id main_id
今、私は user_id だけを知っています。これらの項目で結果 (配列) を取得したい:
- tbl_main からの ID のリストが必要です (結果は、この tbl_main.id DESC でソートする必要があります)
- tbl_friends.user_id=user_id AND tbl_friends.main_id=tbl_main.id の場合、tbl_friends に何人のユニークな人がいるかを数えます。
- tbl_friends.user_id=user_id AND tbl_friends.main_id=tbl_main.id の場合、tbl_friends からピープル値のコンマ区切りリスト (または配列) を取得します
- tbl_cats.main_id = tbl_main.id の場合、tbl_cats.user_id の一意の値をカウントします
これは、1 つのクエリの結果である必要があります。多くの COUNT(DISTINCT) の組み合わせを試していますが、機能せず、完全に失われています。助けてください。どうもありがとう
私はこのようなことを試しました(以下を参照)。結果は問題ないようですが、それを行う方法は正しいですか (1 つのクエリで 3 つの選択)? サーバーの負荷はどうですか?大規模なデータでも問題なく動作しますか?
SELECT e.id
(SELECT GROUP_CONCAT(DISTINCT ef.people) FROM tbl_friends ef WHERE ef.user_id=$user_id AND ef.main_id=e.id) as result_people,
(SELECT COUNT(DISTINCT et.user_id) FROM tbl_cats et WHERE et.main_id=e.id) as total
FROM tbl_main e
WHERE e.user_id = $user_id
ORDER BY e.id DESC