Я пытаюсь сделать INNER JOIN по двум запросам. Если у меня есть широкий оператор SELECT для первого компонента, он отлично работает. Если я попытаюсь добавить WHERE ... к первому компоненту, я получаю неинформативную ошибку синтаксиса, и я не знаю почему.SELECT * FROM mytable INNER JOIN и т. Д. Ok, но SELECT * FROM mytable WHERE ... INNER JOIN error
Это то, что работает, но медленно, потому что мой стол большой (~ 1mil строк)
SELECT a.RoomNum, a.EventName, a.EventStatus, a.EventDateTime FROM eventtable a
INNER JOIN
(
SELECT `RoomNum`, eventname, MAX(`EventDateTime`) as MT
FROM `eventtable`
WHERE eventname = "DND"
Group BY RoomNum
) b
ON a.RoomNum = b.RoomNum and a.EventDateTime = b.MT and a.eventname = b.eventname
Но что мне действительно нужно:
SELECT a.RoomNum, a.EventName, a.EventStatus, a.EventDateTime from eventtable WHERE a.EventName = "DND" a
INNER JOIN
(
SELECT `RoomNum`, eventname, MAX(`EventDateTime`) as MT
FROM `eventtable`
where eventname = "DND"
Group by RoomNum
) b
on a.RoomNum = b.RoomNum and a.EventDateTime = b.MT and a.eventname = b.eventname
Я думал о присвоении результата в таблице но на самом деле не нужно было создавать таблицу, а затем отбрасывать ее, чтобы убедиться, что в следующий раз, когда будет выполнен запрос, уже не будет таблицы.
Спасибо.
Какая неинформативная ошибка синтаксиса? –
Все соединения всегда должны быть перед любым утверждением – Capsule
@scrowler Неинформативная синтаксическая ошибка: «# 1064 - У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, name = "DND" INNER JOIN (SELECT 'RoomNum', eventname, MAX (' EventDateTime') как M 'в строке 1 " – janson