2013-04-02 3 views
2

Хорошо, я не был уверен, как рассказать об этом в ближайшее время, так что извините, это не очень хорошо. Я не мог найти ответ нигде (возможно, до того, что я не мог правильно рассказать о своем вопросе)печатает записи со стола, но не печатает дубликаты

Это моя проблема: у меня на моем веб-сайте внедрена входящая/исходящая система, что я хочу do есть список имен людей, которые отправили этому пользователю сообщение, но я не могу придумать, как это сделать, когда он будет тратиться через таблицу сообщений и выбирать только одну запись с каждым именем пользователя, извините, если это недостаточно ясно, рад еще больше расширить, если это необходимо ..

спасибо ..

+2

Что-то вроде SELECT DISTINCT user FROM message ....? Трудно ответить без какой-либо схемы кода или db. –

ответ

0

лучший лучше всего, вероятно, создать новую таблицу, которая будет представлять «послал мне сообщение (или друг с другом ?) до "

Для этого вам потребуется много-много отношений таблицы идентификаторов пользователя.

Создать таблицу HasMessaged с двумя столбцами SenderId и ReceiverId. Затем вы можете присоединиться к пользователю к себе через эту таблицу и для любого отдельного пользователя, создать список всех, кто послал ему сообщение. Первоначально таблица должна была быть заполнена путем запуска дорогого запроса один раз в вашей таблице сообщений, но это не должно быть слишком плохо. После его заполнения вы можете обновить его, выполнив либо простой INSERT ... ON DUPLICATE KEY UPDATE, чтобы убедиться, что таблица содержит правильную запись.

0

Было бы полезно, если бы вы предоставили код & структуры того, что у вас есть.

Я предполагаю, что у вас есть таблица вроде этого:

CREATE TABLE `messages` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`sender` VARCHAR (50) NOT NULL , 
`receiver` VARCHAR (50) NOT NULL , 
`dateSent` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , 
`contents` TEXT NOT NULL) 

и ввести данные, что-то вроде этого:

id sender receiver dateSent contents 
1 Joe  Jane 4/8/2013 9:15 How are you? 
2 Jane Joe  4/8/2013 9:22 Fine 
3 Joe  Jane 4/8/2013 9:27 Can you help me with MySQL? 
4 Jane Joe  4/8/2013 9:31 Sorry. Ask Meg. 
5 Joe  Meg  4/8/2013 9:38 Can you help me with MySQL? 
8 Meg  Joe  4/8/2013 9:45 Sure! 

И теперь вы хотите знать, кто послал сообщение для Джо , Вот SQL:

SELECT `sender` FROM `messages` 
WHERE `receiver` = "Joe" 
GROUP BY `sender` 

Результат этого SQL будет:

Sender 
    Jane 
    Meg 

Даже если Джейн послал Джо 2 сообщения, ее имя появляется только один раз.

+0

Если мой ответ будет полезен, пожалуйста, поддержите его или примите. Если нет, прокомментируйте ниже, и я буду пересматривать и улучшать свой ответ. – Marjeta

Смежные вопросы