2014-02-08 3 views
0

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

пользователи

| ID | имя пользователя | img |

первичный ключ идентификатор, но имя пользователя является уникальным ключом

карты

| ID | имя пользователя | адрес |

Первичный ключ - id. Содержит пользователей различных карт (города), которые посетили.

друг

| ID | user_req | user_acc | статус |

Первичный ключ - id. Два пользователи друзья, только если статус 1.


мне нужно иметь в результате карты, что мои друзья, так что кортеж так:

| имя пользователя | img | адрес |

имя пользователя это имя пользователя моего друга

IMG образ ее профиля

адрес это адрес, место, где он посетил

кортежей должны также сортируются в порядке убывания в соответствии с идентификатором таблицы карт.

Запрос Я использовал, чтобы найти друзей пользователя является:

 SELECT * 
     FROM users 
     INNER JOIN friend ON (username = user_req) 
     WHERE (user_acc = ? AND status = 1) 
     UNION DISTINCT 
     SELECT * 
     FROM users 
     INNER JOIN friend ON (username = user_acc) 
     WHERE (user_req = ? AND status = 1) 

где ? - пользователь, которого я хочу найти.

Кто-нибудь знает, как это сделать? Большое спасибо

ответ

1

Дополнительные ссылки на карты?

SELECT u.username, u2.img, m.address 
FROM friend f 
INNER JOIN users u ON f.user_acc = u.username 
INNER JOIN maps m ON u.username = m.username 
WHERE (f.user_req = ? AND f.status = 1) 
UNION DISTINCT 
SELECT u.username, u2.img, m.address 
FROM friend f 
INNER JOIN users u ON f.user_req = u.username 
INNER JOIN maps m ON u.username = m.username 
WHERE (f.user_acc = ? AND f.status = 1) 
ORDER BY m.id DESC 
+0

благодарит за ответ! Когда я запускаю ваш запрос, я получаю следующую ошибку ** Таблица «u» не существует **. Когда я заменяю u на пользователей, у меня есть проблема с u2 .. :( – user3287827

+0

Errr, oops. Предназначен для псевдонима таблицы пользователей как u.Положите u, но забыл упомянуть пользователей. Исправлено. – Kickstart

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