Объединение данных из разных таблиц для формирования ленты новостей - PullRequest
1 голос
/ 14 ноября 2009

Допустим, у меня есть 2 таблицы, сообщение и продукт. Каждый раз, когда пользователь публикует новые продукты или сообщения, его фиды обновляются пользователями, подписавшимися на этого конкретного пользователя. Это похоже на фид Facebook.

Проблема заключается в том, как объединить записи из 2 разных таблиц: Сообщение и Продукт, чтобы создать новостную ленту. Лента должна сортироваться по дате публикации.

Я думаю, что это трудно сделать, используя только SQL, или, может быть, мне нужна другая таблица и вставлять новую строку всякий раз, когда создается новый продукт или сообщение?

спасибо за чтение, надеюсь, вы можете получить некоторую помощь здесь, спасибо !!

Ответы [ 2 ]

1 голос
/ 14 ноября 2009

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

post_model_01

Стол сообщений имеет столбцы, общие для всех сообщений; В таблицах сообщений и продуктов есть только столбцы, специфичные для каждого из них.

1012 *
* UPDATE

Чтобы получать сообщения (изменено после 2009-11-10 15:00)

SELECT * 
  FROM Message AS m
  JOIN Post as AS p ON p.PostID = m.PostID
WHERE p.LastChanged > '2009-11-10 15:00'

Для получения товаров (изменено после 2009-11-10 15:00)

SELECT * 
  FROM Product AS d
  JOIN Post as AS p ON p.PostID = d.PostID
WHERE p.LastChanged > '2009-11-10 15:00'

Получить все в одной таблице с NULLS в столбцах, которые не относятся к сообщению или продукту.

SELECT * 
  FROM Post AS p
  LEFT JOIN Message AS m p.PostID = m.PostID
  LEFT JOIN Product AS d ON p.PostID = d.PostID
WHERE p.LastChanged > '2009-11-10 15:00'
1 голос
/ 14 ноября 2009

Чтобы сделать это в SQL, вы хотите выполнить объединение таблиц. В этом случае вы хотите присоединиться к сообщению и продукту пользователем.

Вот ссылка на страницу Coding Horror, которая является лучшим объяснением увиденных мной объединений, Визуальное объяснение объединений SQL

...