Как работает самосоединение MySQL?
Самостоятельное объединение в MySQL предполагает объединение двух экземпляров одной и той же таблицы, обычно с помощью разные псевдонимы. Он позволяет сравнивать строки одной и той же таблицы по определенным критериям.
Объяснение запроса
Давайте разберем данный запрос:
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
FROM Предложение
Это указывает, к каким таблицам присоединяться:
FROM mm_eventlist_dates event1 JOIN mm_eventlist_dates event2
Одна и та же таблица mm_eventlist_dates используется дважды и имеет псевдонимы event1 и event2.
ON Предложение
Это объединяет два экземпляра таблицы на основе условия:
ON event2.startdate = date_add(event1.enddate, INTERVAL 1 DAY)
Он находит строки в event2, где начальная дата соответствует дню после конечной даты соответствующую строку в событии1.
Условие WHERE
Это фильтрует результаты на основе указанного условия:
WHERE event1.id=$id
Выбирает строки из события 1, где идентификатор соответствует заданной переменной $id.
Предложение SELECT
Выбирает нужные поля из объединенных строк :
SELECT event2.id, event2.startdate, event2.price
Он извлекает идентификатор, дату начала и цену из экземпляра event2, который содержит информацию о событиях, следующих за указанным событием. (событие1) на один день.
Визуальная демонстрация
Представьте, что в таблице mm_eventlist_dates есть следующие записи:
event1.id | event1.enddate | event2.id | event2.startdate |
---|---|---|---|
1 | 01.03.2023 | 2 | 02.03.2023 |
3 | 2023-03-03 | 4 | 2023-03-04 |
По данному запросу:
Это демонстрирует, как MySQL сам -join позволяет идентифицировать связанные строки на основе заданных критериев даже внутри одной таблицы.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3