SQL查询:引用同一查询中两个变量的另一个表数据

时间:2012-05-30 08:09:49

标签: php mysql join union

我正在尝试运行MYSQL查询,我需要在目标中两次从源表中获取相同的“一块”信息... 让我解释一下:

2个表格:“活动”和“已存档的活动”。 “存档事件”是一个“链接” - 将当前的公开事件与过去(关闭)事件联系起来。 该表仅包含Events表中Event_ID的id。

我想要做的是获取存档表中每个组合的事件标题。

EG:

   -----------------------------------
   |       ARCHIVE TABLE             |
   |PK|ClosedEventID |CurrentEventID |
   |1 |      5       |       3       |
   |2 |      2       |       3       |
   -----------------------------------

   -----------------------------------------
   |      EVENTS TABLE                     |
   |Event_ID | Event_Title | ............. |
   |    1    | Party 1     | ............. |
   |    2    | Party 2     | ............. |
   |    3    | Wedding 1   | ............. |
   |    4    | Funeral 1   | ............. |
   |    5    | Pancake     | ............. |
   ----------------------------------------

我猜它会成为一个联盟或一个联盟或其他东西;我的SQL是公平的,但是我的头脑正在努力解决这个问题。

所以我想要做的是,一旦运行了查询,存档事件表中的每个'对'都会显示为这样(这样我就可以在PHP中处理它了......):

   -----------------------------------
   |       ARCHIVE TABLE             |
   |PK|ClosedEventID |CurrentEventID |
   |1 | Pancake      |   Wedding 1   |
   |2 | Party 2      |   Wedding 1   |
   -----------------------------------

提前感谢您的帮助! :)

2 个答案:

答案 0 :(得分:4)

这很简单:

SELECT
    a.pk as "pk",
    e1.event_title as "closed_event",
    e2.event_title as "current_event"
FROM
    events as e1
    JOIN archive as a on e1.event_id = a.closed_event_id
    JOIN events as e2 on a.current_event_id = e2.event_id

答案 1 :(得分:2)

SELECT PK, e1.Event_Title AS ClosedEventID, e2.Event_Title AS CurrentEventID
FROM   ARCHIVE
  JOIN EVENTS AS e1 ON e1.Event_ID = ARCHIVE.ClosedEventID
  JOIN EVENTS AS e2 ON e2.Event_ID = ARCHIVE.CurrentEventID

sqlfiddle上查看。

了解SQL joins