一尘不染

MYSQL自加入如何工作?

mysql

我最近问了一个有关“自我加入”的问题,得到了一个很好的答案。

该查询用于查找事件1之后1天的事件2的ID,开始日期和价格。

该代码工作正常。 但是我不知道如何。

有人可以尽可能详尽地解释一下-查询的不同部分是什么以及它们做什么?

SELECT event2.id, event2.startdate, event2.price
FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2 
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
WHERE event1.id=$id

非常感谢您的帮助,无论出于什么原因,我都很难解决这个问题。


阅读 257

收藏
2020-05-17

共1个答案

一尘不染

我试图理解的方式是在第一块上写出两个列表,分别标记为event1和一个event2。然后在每个列表中列出一些记录(列表将是相同的),现在从以下描述的WHERE开始。

我们正在从两个表中获取数据(确定同一张表使用了两次,但暂时不要理会)

FROM mm_eventlist_dates event1
JOIN mm_eventlist_dates event2

从下至上阅读其余内容可能会有所帮助。

  WHERE event1.id=$id

因此,我们希望来自event1的记录具有指定的记录ID。大概那是一个记录。现在我们找出事件结束后的第二天。

 date_add(event1.enddate, INTERVAL 1 DAY)

现在告诉我们来自event2的记录,它们需要从该日期开始,

ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)

现在,我们确定了两个记录,我们想要什么字段?

SELECT event2.id, event2.startdate, event2.price

哦,就是我们确定起始日期的字段。

2020-05-17