0


0

MySQL:1つのクエリで異なるエンティティをマージする

基本的に、ユーザーウォールに表示するアイテムの3つの異なるクラス、評価、コメント、更新が​​あります。 この3つは完全に異なるエンティティですが、それらはすべてユーザーウォールに表示できるため、単に「wallitem」と呼びます。 すべてには、作成された日付を表すタイムスタンププロパティがあります。

タイムスタンプ順に並べられたウォールアイテムをユーザーがページングできるようにします。 例:最後の10個のwallitems。 またはwallitems 20から30。 すべての異なるエンティティが異なる列を持っているにもかかわらず、最後の10個の「ウォールアイテム」を提供するMySQLクエリはありますか?

アイテムのリストを取得し、各アイテムがすべての異なるエンティティのすべてのプロパティ、タイプを定義する追加のプロパティ(「評価」など)を持っていることを想像できます。実際に評価の場合、他のすべてのプロパティはヌル。 私は私の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 Answer


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

あなたが始めるでしょう