Thanks yang udah mau liat thread ane, problemnya udah solved gan oleh agan beluvedia..
Selamat malam agan agan sekalian. Ane mohon bantuannya donk gan, untuk para master-master programmer.
Ane ada sedikit masalah soal query nih. Ane lagi ngerjain tugas kantor buat aplikasi sosial media dimana di dalamnya terdapat fitur pertemanan. Tapi ane mentok di query ini.
Bagi agan-agan yang bisa bantu akan ane kasih bonus 100 rb deh gan, terserah mau cash atau bentuk pulsa ane gak bohong, klo bohong biar ane keilangan 10x lipatnye deh.
Gini gan ane mo buat fitur pertemanan, table yang sudah ane buat ada 2. Pertama table users dan yang kedua table friendship. Kira- kira bentuknya seperti ini:
Users
ID FULLNAME
1 Entong
2 Malih
3 Bolot
4 Bokir
5 Komeng
Friendship
id user_id friend_id status
1 1 2 1
2. 2 1 1
3. 2 3 1
4. 3 2 1
5 2 4 1
6. 4 2 1
7. 1 3 0
Skemanya adalah jika ada member yang add friend maka ane insert satu row di table friendships. Misalnya si Entong request jadi temen si Bolot nah ane insert satu row dimana user_id nya = 1 dan friend_id nya = 3 dengan status = 0, ketika si Bolot accept si Entong maka ane insert lagi di table friendships
dimana user_id = 3 dam friend_id=1.
Nah gimana querynya biar ane bisa dapet result seperti di bawah ini jika ane login sebagai Entong(user_id = 1):
user_id fullname mutual_friend is_friend request
2 Malih 0 yes yes
3 Bolot 1 no yes
4. Bokir 0 no no
Dan kalo login sebagai si Komeng(user_id = 5):
user_id fullname mutual_friend is_friend request
1 Entong 0 no no
2 Malih 0 no no
3 Bolot 0 no no
4. Bokir 0 no no
Jadi ane bisa mendapatkan list semua user beserta mutual friend dan status pertemanannya. Biar gampang querynya agan bisa download sql scriptnya disini:
https://www.dropbox.com/s/tdrklxbt23...friendship.txt
Ane udah coba2 sendiri, ini query ane:
Code:
SELECT
User.id,
User.fullname,
SUM( IF( User.id = friend_links_1.friend_id, 1, 0 ) ) AS mutual,
IF(SUM( IF( User.id = Friendship.friend_id, 1, 0 ) ) > 0 , '1' , '0') as already_friend
FROM
users as User
INNER JOIN (
friendship as Friendship
INNER JOIN
friendship friend_links_1
ON
(
Friendship.friend_id = friend_links_1.user_id
AND
Friendship.status = 1
AND
friend_links_1.status = 1
)
)
ON
(
Friendship.user_id = 1
AND
User.id <> 1
)
WHERE 1
GROUP BY
User.id, User.fullname
ORDER BY mutual DESC
LIMIT 0 , 30
ANe bisa dapetin mutual_friend sama status pertemanannya jika sudah menjadi teman, tetapi ane gak bisa dapetin apakah si Member telah request friend ke seseorang yang belum menjadi temannya.
Dan jika ane login sebgai si Komeng di mana di table friendship belum ada user_id si Komeng maupun friend_id si komeng itu hasil querynya empty. Yang ane mau hasilnya tetep keluar.
Please help gan, ane udeh muter2 nyari belum dapet jawabannya, bagi agan-agan yang tau mohon sharing ilmunya. Kalo hasilnya bener dan agan orang pertama yang jawabannya bener ane beneran kasih 100 rb, mayan gan buat bensin dapet
.