sorgu üzerine fazlaca uğraştım çıldırttı beni bıraktım.
Düşündüğüm mantık şu id!=3 or gonderen_id=3 group by id,gonderen_id

sorgu sonucunda çıkan
id g_id date
3 4 20:26
4 3 20:27

bu 2 row için max dateyi nasıl bulucam ?

kısaca tabloyu örnek veriyim.
iç içe select ile olmuyor. karşu kullanıcıya gelen mesajları buldum ama user 3 için attığı mesajlar olmuyor neyse fazla uzatmıyım dinlenik kafayla belki göremediğimi görürsünüz.

id g_id mesaj date
3 4 sa 20:00
4 3 as 20:15
3 5 naberr 20:20
3 4 naber 20:21
4 3 iyi sen ? 20:22
3 2 naber 20:23
2 3 iyim nasılsın 20:24
2 3 napıyorsun 20:25
3 4 sa 20:26
4 3 naber 20:27

Max yapabildiğim sorgu:

SELECT *,MAX(date) AS mdate3 FROM user_mesajlar WHERE id=3 OR gonderen_id=3 GROUP BY id,gonderen_id ORDER BY `mdate3` DESC;

id g_id mesaj date
2 3 iyim nasılsın 20:24
3 2 naber 20:23
3 4 sa 20:26
3 5 naberr 20:20
4 3 naber 20:27

örnek user 3'e göre sorgu çıktısı:

id g_id mesaj date
4 3 naber 20:27
2 3 napıyorsun 20:25
3 5 naberr 20:20

olmalı.