При написании запросов на получение Оборотов, Остатков и прочего рекомендуется использование Виртуальных таблиц, при этом условия по возможности следует задавать через параметры виртуальных таблиц. Рассмотрим почему так.
Приведу 2 примера реализации UPSERT (insert or update) в SQLite:
Для работы с SQLite из Python можно использовать нативную библиотеку, ее функциональности достаточно для основных задач. Некоторые могут сказать: зачем так, когда есть SQLAlchemy и можно писать независимый от СУБД код, отвечу: не для всех задач нужно тащить framework.
Пример наиболее интересных моментов в языке запросов используемом в MySQL
Имеется база 1С, как сервер СУБД используется PostgreSQL. Задача развернуть базу в другом местоположении (не там где по умолчанию хранятся базы).
В MS SQL Server получить интервал: начало-конец недели можно так
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
-- Поиск по текстам SQL select so.name, so.xtype, sc.object_id, cast(sc.definition as varchar(max)) definition FROM sys.sql_modules sc (nolock) INNER JOIN sysobjects so (nolock) ON sc.object_id=so.id and cast(sc.definition as varchar(max)) like '%MySearchValue%' -- Поиск по текстам Jobs SELECT _jobs.name, _steps.step_name, _steps.command FROM msdb.dbo.sysjobsteps AS _steps (nolock) JOIN msdb.dbo.sysjobs AS _jobs (nolock) ON _jobs.job_id=_steps.job_id WHERE _steps.command LIKE '%MySearchValue%' |
limit — выборка определенного количества записей из общей выборки. Чаще всего используется для постраничной навигации.
Задача: необходимо выбрать все товары находящиеся на 3 странице, при этом на одной странице отображается 5 товаров.
SELECT greatest(@min_value,round((rand() ) * @max_value))
где
@min_value — нижняя граница случайного числа
@max_value — верхняя граница случайного числа
Не идеально, но работает )