Mysql lef join sorunsalı
Bir arkadaşlık scripti yazmaya uğraşıyorum. Tablolarım aşağıdaki gibi:
Üyeler Tablom:
Arkadaşlar Tablom:
Arkadaşlar tablomda 1 olan benim ve diğer üyelere arkadaşlık isteği göndermişim ve kabul etmişler.
7 id numaralı kişi de bana arkadaşlık isteği yollamış ve kabul etmişim.
Sql Kodum:
SELECT friend_id, friend_adding_id, friend_added_id, user_id, user_name FROM friends
LEFT JOIN users ON friends.friend_added_id=users.user_id
WHERE friend_adding_id=1 OR friend_added_id=1 AND friend_confirm=1
ORDER BY friends.friend_id DESC LIMIT 1, 10
Burada friend_confirm=1 diğer kullanıcının arkadaşlık isteğini kabul ettiği anlamına geliyor.
(Kişinin profilinde arkadaşlarını listeletmeye çalışıyorum.)
Ama sorguda yanlış yaptığım bir yer var. Son resimdeki friend_id=63 olan kayıttan dolayı kendimi de listeletiyor bunu istemiyorum.
Kendim yerine 7 numaralı üyeyi listeletmem gerek. Sorgumu nasıl düzeltebilirim.
Yardımlarınızı bekliyorum.
Ben olsam tabloyu şu şekilde yapardım.
friend_list
| owner_id | friend_id |
|---|---|
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
friend_request
| owner_id | friend_id | confirm |
|---|---|---|
| 1 | 2 | 1 |
| 4 | 1 | 1 |
| 2 | 3 | 0 |
Birisi arkadaşlık isteği gönderdiğinde gerekli kontroleri yaptıktan sonra friend_request tablosula kayıt edersin.
Diğer kullanıcı kabul edincede friend_list tablosuna 2 adet kayıt eklersin(hem arkadaşlık isteği göndereni hemde kabul eden kişiyi) ve friend_request teki confirm i 0 dan 1 e güncellersin.
Arkadaşlık listesini çekerkende aşağıdaki gibi çekersin
SELECT user.*, friend_list.* FROM user LEFT JOIN friend_list ON user.user_id = friend_list.owner_id WHERE users.user_id = ?

