SQL - вернуть данные из столбца, используя 2 разных идентификатора - PullRequest
0 голосов
/ 20 января 2012

Я пытаюсь создать систему сообщений на основе пользователя. Мне бы хотелось, чтобы появлялись сообщения, которые отправляются между друзьями, что-то вроде новостной ленты в Facebook.

Я использую запрос:

SELECT friend_user_2, user_id, user_name, sent_id, sent_from_id, sent_to_id
FROM friends, users, sent_messages 
WHERE (user_id = sent_from_id AND friend_user_1 = '$user_id' AND sent_from_id = friend_user_2) 
OR (friend_user_1='$user_id' AND friend_user_2=sent_to_id AND user_id=sent_to_id) ORDER BY sent_id

Проблема, с которой я сталкиваюсь, состоит в том, что user_id отправителя и получателя не идентифицируются отдельно, а только возвращает user_id друга. Я бы подумал, что объединение таблиц необходимо для того, чтобы каким-либо образом прикрепить имена или (если это вообще возможно) вложить другой запрос в массив, возвращаемый запросом, который затем запрашивает каждое имя отдельно.

Есть идеи ??

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Вы можете получить два идентификатора пользователя, используя имя таблицы или псевдонимы, например:

SELECT users.user_id, friends.user_id AS friend_user_id ...
0 голосов
/ 20 января 2012

Если таблица friends содержит неупорядоченные пары друзей и каждое сообщение относится только к одной такой паре (от + до), вы можете изменить структуру базы данных, чтобы каждое сообщение получало ссылку на эту пару.(скажем, friends_id).

Эти дополнительные данные могут ускорить ваши запросы, потому что SELECT с различными условиями соединения в сочетании с OR почти неоптимизируемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...