如何从单个查询中的两个表中获取行?
问题描述:
我有三个表如何从单个查询中的两个表中获取行?
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可以与事件表,在单一的查询,并将结果按照从小到大时间顺序。
答
这将创建一个表加入与订购,只要你想
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
答
你可以做这样的事情:
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
http://en.wikipedia.org/wiki/Join_%28SQL%29? –
单行中的两种事件类型或“UNION”一起? –