сложный запрос соединения / объединения - PullRequest
1 голос
/ 25 ноября 2011

Таблица:

items -> id, userId, tagId, postedOn

itemsTags -> id, name

users -> id, firstName, lastName

usersFriends -> id, userId, friendUserId

Система нуждается в перестройке, на данный момент поток выглядит так:

  1. Получить всех друзей пользователя.
  2. За каждого друга (foreach) вы можете получить предметы, которые отправил друг.
  3. Получить данные тега элемента (tagId).
  4. Получить пользовательские данные элемента (userId).

Но проблема в том, что мне нужно отсортировать его по дате, а позже, например, по определенной дате, я хочу увидеть все записи моих друзей, которые были опубликованы сегодня, поэтому мне нужен запрос, который выполняет эти 4 запроса в одном, так в основном SELECT * FROM usersFriends JOIN items ON userId ...

Остальное я просто не могу понять.

1 Ответ

1 голос
/ 25 ноября 2011
SELECT F.*, I.*, IT.* 
FROM usersFriends UF 
  LEFT JOIN users F                  --- friends
    ON F.id = UF.friendUserId 
  LEFT JOIN items I                  --- items they posted
    ON I.userId = UF.friendUserId 
  LEFT JOIN itemsTags IT             --- tags of those items
    ON I.tagId = IT.id 
WHERE UF.userId = ??

Где на вопросительных знаках вы размещаете идентификатор пользователя.

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