metal_head
Registered
Така, първо да покажа таблицата, която имам:
Казва се pm и има следните колони:
id | sender | receiver | message | title | timestamp | isread
Това е таблица за лични съобщения. Аз обаче искам да показвам личните съобщения в сайта в стил фейсбук - тоест да има списък с потребителите, с които някога съм си говорил и вече когато кликна на дадения потребител, да излиза разговора. Това добре, направих го, но имам един проблем със самото показване на въпросния списък. Какво ли не правих, все не се получава. Понеже имам поле sender и receiver, ето как е заявката ми:
[sql]SELECT * FROM pm WHERE receiver='$user_id' OR sender='$user_id' GROUP BY receiver[/sql]
Това е ОК, работи в 70% от случаите, но вижте, ако някой ми напише съобщение и аз не съм отговорил (тоест нямаме никакви записи с този потребител в колоната receiver), то той няма да го има в списъка.
Ок, тогава ще направя така:
[sql]SELECT * FROM pm WHERE receiver='$user_id' OR sender='$user_id' GROUP BY sender[/sql]
Сега обаче ще ми покаже само потребителите, които са ми писали. Ако аз съм писал на някой и той не ми е отговорил, няма да ми го покаже.
Ако групирам GROUP BY sender, receiver пък ще имам дубликиращи се записи с тези, на които съм писал и те са ми писали. Същото ще се получи и ако имам две заявки.
Някой има ли идея как ще стане това при този дизайн на таблицата или ще трябва да се преправя таблицата?
Казва се pm и има следните колони:
id | sender | receiver | message | title | timestamp | isread
Това е таблица за лични съобщения. Аз обаче искам да показвам личните съобщения в сайта в стил фейсбук - тоест да има списък с потребителите, с които някога съм си говорил и вече когато кликна на дадения потребител, да излиза разговора. Това добре, направих го, но имам един проблем със самото показване на въпросния списък. Какво ли не правих, все не се получава. Понеже имам поле sender и receiver, ето как е заявката ми:
[sql]SELECT * FROM pm WHERE receiver='$user_id' OR sender='$user_id' GROUP BY receiver[/sql]
Това е ОК, работи в 70% от случаите, но вижте, ако някой ми напише съобщение и аз не съм отговорил (тоест нямаме никакви записи с този потребител в колоната receiver), то той няма да го има в списъка.
Ок, тогава ще направя така:
[sql]SELECT * FROM pm WHERE receiver='$user_id' OR sender='$user_id' GROUP BY sender[/sql]
Сега обаче ще ми покаже само потребителите, които са ми писали. Ако аз съм писал на някой и той не ми е отговорил, няма да ми го покаже.
Ако групирам GROUP BY sender, receiver пък ще имам дубликиращи се записи с тези, на които съм писал и те са ми писали. Същото ще се получи и ако имам две заявки.
Някой има ли идея как ще стане това при този дизайн на таблицата или ще трябва да се преправя таблицата?