Привет ребята У меня есть пользователи таблицы:SQL Select с присоединиться
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(30) NOT NULL,
`username` varchar(30) NOT NULL,
`password` varchar(50) NOT NULL,
`firstname` varchar(20) NOT NULL,
`lastname` varchar(20) NOT NULL,
`birthdate` date DEFAULT NULL,
`role` varchar(10) NOT NULL,
`description` text,
`fotopath` varchar(50) DEFAULT NULL,
`city` varchar(20) NOT NULL,
`street` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
и стол private_message:
CREATE TABLE IF NOT EXISTS `private_message` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_from` int(11) NOT NULL,
`user_to` int(11) NOT NULL,
`reply_id` int(11) NOT NULL,
`message` varchar(400) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`readed` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `user_from` (`user_from`),
KEY `user_to` (`user_to`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `private_message`
ADD CONSTRAINT `private_message_ibfk_1` FOREIGN KEY (`user_from`) REFERENCES `users` (`id`) ON DELETE CASCADE,
ADD CONSTRAINT `private_message_ibfk_2` FOREIGN KEY (`user_to`) REFERENCES `users` (`id`) ON DELETE CASCADE;
Я хочу выбрать (user_from, user_to, сообщение, from_username, to_username, прочитанные, дата)
Я попытался это:
SELECT P.user_from,P.user_to,P.message,P.readed,P.date,U.username as from_username,D.username as to_username
FROM private_message as P JOIN users as U ON(P.user_from=U.id) JOIN users as D ON(P.user_to=D.id)
GROUP BY to_username,from_username
и это дает мне
user_from|user_to|message|from_username|to_username|readed|date
1 | 2 | asdf | Admin | Baski | 0 | 2014-06-22 12:00:16
2 | 1 | asdf | Baski | Admin | 0 | 2014-06-22 12:02:16
3 | 1 | asdf | Smrdis | Admin | 0 | 2014-06-22 12:02:16
мне нужна таблица, как это:
user_from|user_to|message|from_username|to_username|readed|date
2 | 1 | asdf | Baski | Admin | 0 | 2014-06-22 12:02:16
3 | 1 | asdf | Smrdis | Admin | 0 | 2014-06-22 12:12:16
Просто, когда я буду выбирать я только знаю, что мой user_id. Мне нужно выбрать все сообщения, присланные пользователю или отправленные пользователем, и группировать их по идентификатору второго лица (может быть отправителем или получателем). Я не могу просто сгруппировать его с помощью user_to или user_from, потому что вы можете отправлять сообщения и не получать ответ. Может ли кто-нибудь помочь мне с этим?
Я не вижу ваш 'user_id' в обеих таблицах? –