Форум сайта python.su
У меня как всегда накипела проблема)) Не срабатывают first и last при группировках в запросах, причем остальные варианты срабатывают (count, sum). Проверила в модулях mx.ODBC, mySQLdb, pysqlite, везде выскакивает ошибка синтаксиса, но этот же запрос срабатывает без ошибок в других программах. Вот пример запроса к MySQL:
“”“SELECT last(number) as numb
FROM fiz
WHERE datarozhd > ‘1970-01-01’
GROUP BY datarozhd;”“”
Вот ошибка:
“ProgrammingError: (1064, ”You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(number) as numb\n FROM fiz\n ’ at line 1“)”
Если заменить last на sum, ошибки нет. Может есть специфика sql в модулях питона и какая-либо замена данным функциям?
Офлайн
Мне кажется что путанница в движках БД.
В MySQL насколько я знаю - нет функции last() - поэтому неудивительно, что он ошибку выдает.
В SQLite - такая может быть, но не уверен на 100%.
Отредактировано (Июль 5, 2007 22:41:42)
Офлайн
Форум, где уже обсуждалась эта тема
Действительно, last и first не входят в список агрегатных функций sql.
Есть еще один момент - не работает также конструкция JOIN во всех этих модулях, хотя в книге по sql я уже нашла примеры использования join при обращении к oracle и mysql. Объединение срабатывает только по банальному знаку равенства.
Офлайн
proDivaЯ использовал JOIN по крайней мере в MySQLdb - все было ОК.
Форум, где уже обсуждалась эта тема
Действительно, last и first не входят в список агрегатных функций sql.
Есть еще один момент - не работает также конструкция JOIN во всех этих модулях, хотя в книге по sql я уже нашла примеры использования join при обращении к oracle и mysql. Объединение срабатывает только по банальному знаку равенства.
Отредактировано (Июль 6, 2007 12:10:59)
Офлайн
А этот запрос сам по себе нормально на сервере отрабатывается?
Офлайн
Может ласт заменить на макс? Или упорядочить в нужном порядке и получить один штук лимитом?
Джойны можно заменить:
select A.a, B.b from A, B where A.ForeignKey=B.PrimaryKey
select A.a, B.b from A join B on A.ForeignKey=B.PrimaryKey
Это одно и то же…
Работает на большинстве субэдэ.
:)
Офлайн
lorienВот пример запроса к Oracle, работающего в access:
Приведите пример запроса с JOIN, который вызывает ошибку.
Офлайн