после нескольких часов попыток, я думал, что прошу вас здесь помочь. Моя проблема заключается в следующем:MySQL заказываю до группы плюс плюс присоединяется после этого
У меня есть две таблицы. Одна таблица содержит общие данные о событиях, а вторая таблица содержит отдельные события, относящиеся к общей таблице (может быть несколько отдельных событий, относящихся к одной общей строке событий).
структура выглядит следующим образом:
1. Общие события таблицы "событий ":
id | club_id | date_created | description | imageLink | ....
2. Одноразовый событий стол:" events_single"
id | events_id (id from events table) | valid_from | valid_until
Все временные метки являются временными отметками unix
Итак, что я хочу получить, это ближайшее одно событие в будущем для клуба с определенным club_id. Строка единственного события должна быть соединена с соответствующей строкой события.
Сформировать ссылку мне удалось получить ближайшие отдельные события для всех клубов: MySQL order by before group by
Запрос выглядит следующим образом:
SELECT p1 . *
FROM events_single p1
INNER JOIN (
SELECT min(valid_from) AS firstEvent, events_id
FROM events_single
WHERE events_single.valid_from >= UNIX_TIMESTAMP()
GROUP BY events_id
)p3 ON p1.events_id = p3.events_id
AND p1.valid_from = p3.firstEvent
ORDER BY p1.valid_from ASC
Это возвращает, например:
id |events_id |valid_from|valid_until
4 |1 |1446706800|1446793200
39 |7 |1446966000|1447052400
14 |4 |1447311600|1447398000
Проблема в том, что теперь мне нужно снова присоединиться к этой таблице с таблицей событий, чтобы получить только отдельные события для определенного clu б.
E.g. если общая таблица событий является
id | club_id | date_created | ....
1 | 1 | 1446793200 | .... <------
2 | 2 | 1456793235 | ....
3 | 5 | 1458735234 | ....
4 | 1 | 1458783425 | .... <------
5 | 2 | 1458953256 | ....
6 | 4 | 1461983283 | ....
7 | 5 | 1461993452 | ....
, и я хочу, чтобы получить сейчас все одиночные события для club_id = 1 и должен возвращать обе таблицы присоединились:
id |events_id |valid_from|valid_until|club_id | date_created | ....
4 |1 |1446706800|1446793200 |1 | 1446793200 | ....
14 |4 |1447311600|1447398000 |1 | 1458783425 | ....
Я попробовал следующий запрос:
SELECT p1.*, p2.*
FROM events_single p1, events p2
INNER JOIN (
SELECT min(valid_from) AS firstEvent, events_id
FROM events_single
WHERE events_single.valid_from >= UNIX_TIMESTAMP()
GROUP BY events_id
)p3 ON p1.events_id = p3.events_id
AND p1.valid_from = p3.firstEvent
WHERE p2.club_id = 1
ORDER BY p1.valid_from ASC
но я получаю сообщение об ошибке:
#1054 - Unknown column 'p1.events_id' in 'on clause'
Если я заменю 'p1.events_id' с 'events_single.events_id' Я получаю ту же ошибку.
Почему? Или лучший вопрос: какой правильный запрос?
Большое спасибо!
попробовать это:. 'ВЫБРАТЬ p1 *, p2 * ИЗ events_single p1 внутреннее объединение событий p2 ON p1.events_id = p2.id. WHERE p2.club_id = 1 и p1.valid_from> = UNIX_TIMESTAMP() ORDER BY p1.valid_from ASC' –
Почему вам нужно 'min (valid_from)'. –
* Из следующей ссылки мне удалось получить ближайшие одиночные события для всех клубов * Ум, нет, вы этого не сделали! ??! – Strawberry