如何在单个查询中从两个表中获取行?

时间:2012-10-04 20:22:40

标签: php mysql

我有三张桌子

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表进行比较,结果按时间的升序排列。

2 个答案:

答案 0 :(得分:0)

这会创建一个单独的表来按需要加入

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

我对'与事件表相比'的含义有点模糊。您可以将此内部选择的结果加到event_id = ref_event_id上的Event表中,假设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

答案 1 :(得分: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