-1

我有三张桌子

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 combined.* FROM (
  SELECT * from EVENT_TYPE1
   UNION
  SELECT * from EVENT_TYPE2) AS combined 

我对“与事件表相比”的含义有些模糊。event_id = ref_event_id假设 ref_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 回答
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 回答