0
account_info、gang_info、gang_join_infoの3つのテーブルがあります。私が欲しいJOIN 3テーブルでCOUNT()を使用する方法
`account_info`:
u_id name g_id
---------------------------------
1 Philip 1
2 John 2
`gang_info`:
g_id g_name g_color
---------------------------------
1 U2 37497
2 The Invicibles 1517
`gang_join_info`:
p_id g_id a_id t_id
---------------------------------
1 1 4 1493894713 --gang founder
1 2 2 1493894714
1 2 3 1493894713
1 2 3 1493894715
2 1 2 1494158866
2 2 4 1494834912 --gang founder
結果は次のとおりです。
g_id g_color FROM_UNIXTIME(gj.t_id, '%d %m %Y') g_members a_id name g_name
---------------------------------
1 37497 04 05 2017 1 4 Philip U2
2 1517 15 05 2017 1 4 John The Invicibles
私のクエリは、私がgang_infoからの暴力団情報を必要とするこのクエリでは
SELECT g.g_id
, g.g_color
, FROM_UNIXTIME(gj.t_id, '%d %m %Y')
, gj.a_id
, name
, g_name
FROM gang_info g
JOIN gang_join_info gj
ON g.g_id = gj.g_id
JOIN account_info a
ON a.u_id = gj.p_id
HAVING gj.a_id = 4
で、ギャングの作成時刻フィールドA_ID = 4とgang_join_infoから、 account_infoの創始者の名前を暴く既に私は質問をしていますが、私はギャングメンバーの量が必要です。ギャングのメンバーの量は良い返しますが、ギャングのデータが間違っている、私はこのクエリに
SELECT g.g_id, g_color, COUNT(a.g_id) AS g_members, FROM_UNIXTIME(t_id, '%d %m %Y'), a.name, g_name FROM gang_info g JOIN account_info a ON g.g_id = a.g_id JOIN gang_join_info gj ON g.g_id = gj.g_id AND gj.a_id = 4
を試みたが、それは動作しません。これは1つのクエリで可能ですか?
編集:
最後に私はサブクエリが必要でした。ここで働いてクエリは次のとおりです。
SELECT g.g_id, g.g_color, (SELECT COUNT(*) FROM account_info a WHERE a.g_id = g.g_id) AS g_members, gj.a_id, FROM_UNIXTIME(gj.t_id, '%d %m %Y'), a.name, g.g_name
FROM gang_join_info gj
JOIN gang_info g ON gj.g_id = g.g_id
JOIN account_info a ON gj.p_id = a.u_id
HAVING gj.a_id = 4 AND g_members != 0
回答がある場合は、答えとして投稿してください。 – IllidanS4