-1

私は3つのテーブルを持っています

1>EVENT table columns event_id, time
2>EVENT_TYPE1 table columns ref_event_id
3>EVENT_TYPE2 table columns ref_event_id

今私がしたいのは、単一のクエリで EVENT_TYPE1 と EVENT_TYPE2 の両方のテーブルからの ref_event_id を EVENT テーブルと比較できるようにクエリを実行し、結果を時間の昇順で並べることです。

4

2 に答える 2

0

次のようなことができます。

SELECT a.col1, a.col2 
FROM EVENT a
LEFT JOIN
    (SELECT col1, col2 FROM EVENT_TYPE1
    UNION ALL
    SELECT col1, col2 FROM EVENT_TYPE2) b ON b.col1 = a.col1  <== Comparison
于 2012-10-04T20:38:43.753 に答える
0

これにより、必要に応じて順序付けされた結合する単一のテーブルが作成されます

SELECT combined.* FROM (
  SELECT * from EVENT_TYPE1
   UNION
  SELECT * from EVENT_TYPE2) AS combined 

「イベントテーブルと比較して」という言葉の意味が少し曖昧です。event_id = ref_event_idref_event_id がイベント テーブルへの外部キーであると仮定すると、この内部選択の結果をイベント テーブルに結合できます。

SELECT * FROM (
     SELECT * from EVENT_TYPE1
      UNION
     SELECT * from EVENT_TYPE2) AS combined 
 JOIN EVENT ON event_id = combined.ref_event_id 
    ORDER BY combined.time ASC
于 2012-10-04T20:34:59.043 に答える