2012-10-04 57 views
-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可以与事件表,在单一的查询,并将结果按照从小到大时间顺序。

+1

http://en.wikipedia.org/wiki/Join_%28SQL%29? –

+1

单行中的两种事件类型或“UNION”一起? –

回答

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 
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 
相关问题