Rumah > Soal Jawab > teks badan
Adakah saya menggunakan kaedah sambungan yang betul di sini? Cuba mencari di mana masalahnya dalam kod. Cuba tukar cantuman dalam, luar dan kanan, hanya untuk mencubanya.
SELECT users.region, count(internal_profile_views.user_id) from users Left JOIN internal_profile_views ON users.id = internal_profile_views.user_id AND users.id = internal_profile_views.viewed_user_id GROUP BY users.region;
Struktur jadual: https://i.stack.imgur.com/nFUZO.jpg
Keluaran yang saya dapat:
Barat 0 Timur Laut 0 Selatan 0 Lain-lain 0 Midwest 0
P粉9869374572024-04-02 17:42:02
Bergantung pada skema anda, nampaknya internal_profile_views
mewakili jadual M:N antara profil pengguna dan pengguna yang melihat profil tersebut.
Dalam kes ini, baris dalam internal_profile_views
中具有相同的user_id
和viewed_user_id
dengan nilai user_id
dan viewed_user_id
bermakna pengguna sedang melihat profil mereka sendiri dan baris dengan nilai yang berbeza bermakna pengguna sedang melihat maklumat Orang lain.
Dalam penyata penyertaan anda, anda menggunakan syarat di mana user_id
和viewed_user_id
必须匹配相同的users.id
rekod boleh dimasukkan ke dalam keputusan. Kemungkinan besar anda hanya berniat untuk menyertai satu lajur, bukan dua.
Berdasarkan ini, pertanyaan anda mungkin salah satu daripada yang berikut:
SELECT viewer.region as Viewer_Region, count(views.user_id) as Unique_Viewers FROM internal_profile_views views INNER JOIN users viewer ON views.user_id = viewer.id GROUP BY viewer.region;
SELECT profileOwner.region as Profile_Region, count(views.user_id) as Unique_Viewers FROM internal_profile_views views INNER JOIN users profileOwner ON views.viewed_user_id = profileOwner.Id INNER JOIN users viewer ON views.user_id = viewer.id GROUP BY users.region;