Другие ответы правильно указали на пропущенное ключевое слово from
и неправильный порядок предложений group by
и order by
.Не должно быть никаких проблем с выполнением рекомендаций, которые вы получили.
Еще одна вещь - это синтаксис, который вы используете для объединения таблиц.Хотя технически это не ошибка, это считается устаревшим.Более новый стандарт предлагает выделенные ключевые слова для объединения, что позволяет отделить логику объединения от логики фильтрации по значениям, которую ранее, в соответствии со старым стандартом, приходилось смешивать в одном предложении, предложении WHERE
.
Позвольте мне показать это, переписав для вас предложения FROM
и WHERE
, чтобы вы могли увидеть разницу.Во-первых, вот ваша текущая реализация логики соединения:
FROM serialNumber_tbl AS sn,
Entitlement_tbl AS ent,
Company_tbl AS c
WHERE sn.serialNumberId = ent.serialNumberId
AND c.companyId = sn.companyId
Оба условия в предложении WHERE
являются условиями соединения.Вот как изменяется тот же фрагмент кода, когда выполняется с более новым синтаксисом:
FROM serialNumber_tbl AS sn
INNER JOIN Entitlement_tbl AS ent ON sn.serialNumberId = ent.serialNumberId
INNER JOIN Company_tbl AS c ON c.companyId = sn.companyId
В этом случае, конечно, предложение WHERE
полностью исключено, но у вас не должно сложиться неправильное впечатление, что оновсегда так.Обычно предложение WHERE
остается действительным и полезным.Если бы он содержал некоторые другие условия, которые не были частью логики соединения, они бы сохранили там места в предложении WHERE
.Я говорю о таких условиях, как ent.Date < '19900101' AND c.CompanyName NOT IN ('IBM', 'Microsoft')
.
Как я уже говорил ранее, с более старым синтаксисом, который вы используете в настоящее время, это условие будет в одном предложении с условиями соединения.В более простых случаях, таких как ваш, его можно было бы пропустить без проблем, но в более сложных запросах это может стать проблемой, если не кошмаром, с точки зрения удобства обслуживания.Так что смысл в том, чтобы привыкнуть к новому синтаксису, прежде чем начинать писать такие сложные запросы.