1

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

2 表:“事件”和“存档事件”。“存档事件”是一个“链接”——将当前打开的事件连接到过去(关闭的)事件。此表仅包含事件表中 Event_ID 的 ID。

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

例如:

   -----------------------------------
   |       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     | ............. |
   ----------------------------------------

我猜这将是一个 join 或 union 之类的;我的 SQL 是公平的,但我的头在旋转试图解决这个问题。

所以我想要做的是,一旦运行查询,归档事件表中的每个“对”都会像这样(这样我就可以在 PHP 中处理它......):

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

提前谢谢你的帮助!:)

4

2 回答 2

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
于 2012-05-30T08:16:15.957 回答
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 连接

于 2012-05-30T08:17:51.650 回答