我正在尝试运行一个 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 | ............. |
----------------------------------------
我猜这将是一个加入或联合或其他什么;我的SQL是公平的,但我的头在旋转,试图解决这个问题。
所以我想做的是,一旦运行查询,存档事件表中的每个"对"就会看起来像这样(这样我就可以在 PHP 中处理它......
-----------------------------------
| ARCHIVE TABLE |
|PK|ClosedEventID |CurrentEventID |
|1 | Pancake | Wedding 1 |
|2 | Party 2 | Wedding 1 |
-----------------------------------
提前感谢您的帮助! :)
这相当简单:
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
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 联接。