开发者

MySQL: Merging different entities in one Query

I basically have three different classes of items that I want to show on a users wall: ratings, comments, and updates. This three are completey different entities, but because they all can appear on a users wall, I just call them "wallitem". The all have a timestamp property, which represents the date they were created.

I want to enable users to page through the wallitems, ordered by the timestamp. For example: last 10 wallitems. Or wallitems 20 to 30. Is there an MySQL Query that gives me the last 10 "wallitems", even though all different entities have different columns?

I could imagine, getting a list of items back, where each item has all the properties of all different entities, an additional property defining the type (for example "rating"), if it is in fact a rating, all other properties are just null. I would love to use such a dicationary in my php code:

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"
  }开发者_如何学Python 
// and so on for all different entities that could represent a wallitem in this context
}


Something like

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

would get you started

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜