2014-01-25 3 views
4

У меня есть таблица с сообщениями, отправленными от 1 пользователя к другому. Я хотел бы знать, что все сообщения, отправленные или полученные от разных пользователей, не совпадают .Ex: 1-2 - это то же самое, что и 2-1, но поскольку 2 сделал последний контакт с пользователем, это сообщение будет показано сверху, а также имя пользователь, которому сообщение отправлено или получено от другого, кроме меня. Также проверьте, отправлено ли какое-либо сообщение от того же пользователя, как 1-1. Мне также нужно получить имя. Я очень ценю любую помощь. Спасибо в Advance.группа пользователей по сообщениям отправлено последним

код

CREATE TABLE if not exists tblA 
(
id int(11) NOT NULL auto_increment , 
sender varchar(255), 
receiver varchar(255), 
msg varchar(255), 
date timestamp, 
PRIMARY KEY (id) 
); 

CREATE TABLE if not exists tblB 
(
id int(11) NOT NULL auto_increment , 
sno varchar(255), 
name varchar(255), 
PRIMARY KEY (id) 
); 


INSERT INTO tblA (sender, receiver,msg,date) VALUES 
('1', '2', 'buzz ...','2011-08-21 14:11:09'), 
('1', '2', 'test ...','2011-08-21 14:12:19'), 
('1', '2', 'check ...','2011-08-21 14:13:29'), 
('1', '1', 'test2 ...','2011-08-21 14:14:09'), 
('2', '1', 'check2 ...','2011-08-21 14:15:09'), 
('2', '1', 'test3 ...','2011-08-21 14:16:09'), 
('1', '2', 'buzz ...','2011-08-21 14:17:09'), 
('1', '2', 'test ...','2011-08-21 14:18:19'), 
('1', '2', 'check ...','2011-08-21 14:19:29'), 
('1', '1', 'test2 ...','2011-08-21 14:10:09'), 
('3', '1', 'check2 ...','2011-08-21 14:21:09'), 
('3', '1', 'test3 ...','2011-08-21 14:22:09'), 
('3', '2', 'buzz ...','2011-08-21 14:24:09'), 
('3', '2', 'test ...','2011-08-21 14:25:19'), 
('1', '3', 'check ...','2011-08-21 14:26:29'), 
('1', '3', 'test2 ...','2011-08-21 14:27:09'), 
('2', '3', 'check2 ...','2011-08-21 14:28:09'), 
('2', '3', 'test3 ...','2011-08-21 14:29:09'), 
('1', '2', 'check3 ...','2011-08-21 14:23:09'); 


INSERT INTO tblB (sno, name) VALUES 
('1', 'Aa'), 
('2', 'Bb'), 
('3', 'Cc'); 

Ищу на линиях входящего SMS сообщи куда приходят данные/отправленный другой пользователю и это имя вместе с последними сообща рассылаемые displayed.How ли я группа, что?

так:

http://jesperbylund.com/wp-content/uploads//2011/11/Facebook-Messenger-459x900.png


Я хочу, чтобы список людей Аа говорят заказывать по дате.

Bb 
Cc 

Все, кроме Аа, поскольку он является пользователем.

+1

Пожалуйста, добавьте всю необходимую информацию непосредственно в ваш вопрос. В частности, SQLFiddle имеет тенденцию уменьшаться, и мы хотим сохранить сообщения для будущих посетителей. –

+0

обновил запрос. – jason

+1

Как выглядит желаемый результат? – Strawberry

ответ

1

я не уверен, чтобы понять, что вы хотите, но попробуйте это:

SELECT t1.sender, t1.receiver, MAX(t1.date) 
FROM tblA t1 
INNER JOIN (SELECT * FROM tblA) t2 ON t1.sender = t2.sender 
            AND t1.receiver = t2.receiver 
            AND t1.sender <> t2.receiver 
GROUP BY t1.sender, t1.receiver 
0

Я не понял, что вам нужно точно, но вам нужно использовать LEFT JOIN, чтобы получить имя.

Это что-то вроде этого

SELECT a.msg AS message, b.name AS sender, c.name AS receiver, date FROM tblA a 
LEFT JOIN tblB b ON b.sno = a.sender 
LEFT JOIN tblB c ON c.sno = a.receiver 
WHERE a.sender != a.receiver 
ORDER BY date DESC 
Смежные вопросы