MySQL:在一个Query中合并不同的实体

时间:2010-12-04 22:22:28

标签: mysql merge

我基本上有三个不同类别的项目,我想在用户墙上显示:评级,评论和更新。这三个是完全不同的实体,但因为它们都可以出现在用户墙上,我只称它们为“wallitem”。 all都有一个timestamp属性,表示它们的创建日期。

我希望用户能够通过按时间戳排序的wallitems进行翻页。例如:最后10个壁垒。或者是wallitems 20到30.是否有一个MySQL查询给了我最后10个“wallitems”,即使所有不同的实体都有不同的列?

我可以想象,获取一个项目列表,其中每个项目具有所有不同实体的所有属性,一个定义类型的附加属性(例如“评级”),如果它实际上是评级,所有其他属性只是null。我想在我的PHP代码中使用这样的dicationary:

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 个答案:

答案 0 :(得分:2)

这样的东西
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

会让你开始