Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Айлурофил
 Аватар для Massaraksh7
509 / 441 / 111
Регистрация: 27.05.2017
Сообщений: 2,649
Записей в блоге: 5

Перенос запросов из SQLite в PostgreSql

15.11.2024, 17:56. Показов 815. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Переношу запросы из SQLite в PostgreSql, столкнулся с таким:
Запрос
SQL
1
2
SELECT MAX(ncol),(SELECT val FROM r_data AS d1 WHERE d.parent=d1.parent AND d.nlist=d1.nlist AND d.ncol=d1.ncol AND d1.nrow=1)
FROM r_data AS d WHERE d.parent=2 AND d.nlist=3;
правильно работает в Sqlite (рис 1), но ругается в PostgreSql (рис 2). В чём причина, и как это разрулить?
Миниатюры
Перенос запросов из SQLite в PostgreSql   Перенос запросов из SQLite в PostgreSql  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2024, 17:56
Ответы с готовыми решениями:

SQLite vs PostgreSQL
Добрый день, подскажите плииз... (где-то статистику видели или по личному опыту) Разрабатываю "связанное" решение между...

Журналирование запросов PostgreSQL
Здравствуйте, недавно начал изучать язык Qt. Перед собой поставил цель: Написать универсальный журнальщик, который подключается к любой...

Просмотр истории запросов в PostgreSQL
Привет, столнулся с проблемой - мне нужно просмотреть для отчета историю создания таблиц и внесения изменений в них (всё , от простых...

6
Айлурофил
 Аватар для Massaraksh7
509 / 441 / 111
Регистрация: 27.05.2017
Сообщений: 2,649
Записей в блоге: 5
15.11.2024, 18:15  [ТС]
Я обошёл это, конечно, путём модификации запроса на
SQL
1
2
SELECT ncol,(SELECT val FROM r_data AS d1 WHERE d.parent=d1.parent AND d.nlist=d1.nlist AND d.ncol=d1.ncol AND d1.nrow=1)
FROM r_data AS d WHERE d.parent=2 AND d.nlist=3 ORDER BY ncol DESC;
но всё-таки )
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
15.11.2024, 18:27
max(ncol) объединяет группу записей, в данном случае все выбранные
с какой записи этой группы должно взяться d.parent и прочее с where?
обычно не разрешают такого, но некотрые субд позволяют, например mysql, получается и sqlite
это значит что оно возьмется с хрен знает какой записи группы без всякого обоснования
1
Айлурофил
 Аватар для Massaraksh7
509 / 441 / 111
Регистрация: 27.05.2017
Сообщений: 2,649
Записей в блоге: 5
15.11.2024, 18:34  [ТС]
Это всё так, я понимаю. Но мне, в данном случае, нужен атрибут у максимальной колонки, и Sqlite позволяет это сделать легко. Впрочем, решение нашёл, хоть и кривое, ну и ладно.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
15.11.2024, 18:48
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
нужен атрибут у максимальной колонки
ага, т.е. берутся поля с записи у которой ncol максимально? а если бы еще стоял максимум от другого поля, с какой записи брались бы значения?
0
Айлурофил
 Аватар для Massaraksh7
509 / 441 / 111
Регистрация: 27.05.2017
Сообщений: 2,649
Записей в блоге: 5
15.11.2024, 19:49  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
ага, т.е. берутся поля с записи у которой ncol максимально?
Не совсем так. В таблице это (с некоторыми упрощениями) так:
SQL
1
2
3
4
5
6
7
8
CREATE TABLE r_data
(
id INTEGER NOT NULL PRIMARY KEY...
parent INTEGER,  /* ссылка на id объекта, которому принадлежим */
nlist INTEGER, /* номер листа таблицы */
nrow INTEGER, /* номер строки таблицы */
ncol INTEGER, /* номер колонки таблицы */
val VARCHAR); /* значение */
Один из листов таблицы см. на рисунке.
Что надо: найти значение даты (строка 0), или наименования столбца (строка 1) у последней колонки конкретного листа, конкретного объекта.
Миниатюры
Перенос запросов из SQLite в PostgreSql  
0
Айлурофил
 Аватар для Massaraksh7
509 / 441 / 111
Регистрация: 27.05.2017
Сообщений: 2,649
Записей в блоге: 5
16.11.2024, 03:05  [ТС]
И дальше - запрос Sqlite, который указывает номер колонки с датой, ближайшей к заданной:
SQL
1
2
SELECT val,ncol,MIN(abs(julianday(substr(val,7,4)||'-'||substr(val,4,2)||'-'||substr(val,1,2))-julianday('2017-01-01')))
 FROM r_data WHERE nlist=3 AND nrow=0 AND ncol>2 AND parent=3;
тоже не работает в PostgreSql. Функции julianday нет. Ну, и группировки.

Добавлено через 21 минуту
Ага, есть, но немножко в другом формате.
SQL
1
2
SELECT val,ncol,MIN(abs(EXTRACT(julian FROM DATE (substr(val,7,4)||'-'||substr(val,4,2)||'-'||substr(val,1,2)))-EXTRACT(julian FROM DATE '2017-01-01'))) AS minval
FROM r_data WHERE nlist=3 AND nrow=0 AND ncol>2 AND parent=2 GROUP BY val,ncol ORDER BY minval
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2024, 03:05
Помогаю со студенческими работами здесь

Отслеживание выполняемых запросов PostgreSQL
Здравствуйте. Пишу универсальный логировщик sql запросов. Как можно отследить выполняемые запросы программы и записать их в БД?

Не совпадают результаты запросов в PostgreSQL и asyncpg
Доброго времени суток, форумчане! Читаю книгу по асинхронному программированию (Asyncio и конкурентное программирование на Python от Мэтью...

Выполнение запросов к SQLite
Возник такой вопрос, меня очень беспокоит то, что я пока не нашел на него однозначного ответа. Доступ к SQLite контролируется за счет...

Несколько одновременно открытых запросов в одном соединении к PostgreSQL
Доброго времени, такая проблема , открыт один NpgsqlDataReader, когда открываю следующий в этом же соединении - то ругается :...

Посоветуйте хорошую утилиту для отладки запросов PostgreSQL
Посоветуйте хорошую утилиту для отладки запросов PostgreSQL. Вот например, для MS Sql Server - лучшая это SSMS (Sql Server...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru