MySQL: объединение разных сущностей в одном запросе - PullRequest
0 голосов
/ 05 декабря 2010

У меня есть три класса предметов, которые я хочу показать на стене пользователя: рейтинги, комментарии и обновления. Эти три совершенно разные сущности, но поскольку все они могут появляться на стене пользователя, я просто называю их "wallitem". У всех есть свойство timestamp, которое представляет дату, когда они были созданы.

Я хочу разрешить пользователям просматривать страницы, упорядоченные по метке времени. Например: последние 10 Wallitems. Или wallitems 20-30. Есть ли MySQL Query, который дает мне последние 10 "wallitems", даже если все разные объекты имеют разные столбцы?

Я мог бы себе представить, возвращая список элементов, где каждый элемент имеет все свойства всех различных сущностей, дополнительное свойство, определяющее тип (например, «рейтинг»), если это на самом деле рейтинг, все остальные свойства просто нулевые. Я хотел бы использовать такой словарь в моем php-коде:

foreach ($wallItemArray as $item) {
  if ($item['type'] == "rating") {
    $rating = $item; // use it as normal "rating"-entity
  } else if ($item['type'] == "comment") {
    $comment = $item; // use it as normal "comment"
  } 
// and so on for all different entities that could represent a wallitem in this context
}

1 Ответ

2 голосов
/ 05 декабря 2010

Что-то вроде

SELECT 'rating' AS type, value AS r_val, NULL AS c_val
FROM Rating

UNION

SELECT 'comment' AS type, NULL AS r_val, comment_text AS c_val
FROM Comment

поможет вам начать

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