Russian Qt Forum
Апрель 26, 2024, 18:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Рекурсивный запрос  (Прочитано 5165 раз)
Termit
Самовар
**
Offline Offline

Сообщений: 144



Просмотр профиля WWW
« : Ноябрь 12, 2015, 19:39 »

Выбираю данные из базы. Имею валидный запрос (выполняется в любом менеджере БД) который не нравится Qt.
Код
SQL
        WITH RECURSIVE group_tree(id_group,id_owner_group) AS (
           VALUES(51000,NULL)
           UNION ALL
           SELECT group_goods.id_group, group_goods.id_owner_group FROM [front.group_goods] AS group_goods
           , group_tree WHERE group_tree.id_group=group_goods.id_owner_group)
        SELECT id_group FROM group_tree
 

Это sqlite3 - https://www.sqlite.org/lang_with.html

Получаю ошибку "near "WITH": syntax error Unable to execute statement"

Подозреваю, что QSqlQuery проверяет какой ему там запрос передали и интерпретирует его как сам захочет...

Вопрос: Как заставить Qt выполнять такие запросы? Это вообще реально?
Записан

Человеческая глупость дает представление о бесконечности
(с) Иоанна Хмелевская
Termit
Самовар
**
Offline Offline

Сообщений: 144



Просмотр профиля WWW
« Ответ #1 : Ноябрь 12, 2015, 19:51 »

Немного обманул.
консоль sqlite3 пишет ошибку синтаксиса. буду смотреть что ей не так.
Записан

Человеческая глупость дает представление о бесконечности
(с) Иоанна Хмелевская
Termit
Самовар
**
Offline Offline

Сообщений: 144



Просмотр профиля WWW
« Ответ #2 : Ноябрь 12, 2015, 19:59 »

Возможность работы с такими запросами добавили в sqlite 3.8.3
Проверял через движок 3.8.11
Qt похоже использует тот который в системе 3.8.2
Попробую обновить в системе и надеюсь вопрос закрою.
Записан

Человеческая глупость дает представление о бесконечности
(с) Иоанна Хмелевская
vbv
Чайник
*
Offline Offline

Сообщений: 59


Просмотр профиля
« Ответ #3 : Ноябрь 12, 2015, 23:59 »

Блин. Ну как же приятно поговорить с умным человеком. Улыбающийся

Вообще QSqlQuery ничего и никогда с запросом не делает он его, тупо, передает серверу в неизменном виде. Читать QSql вдумчиво.

PS: sqllite и рекурсивный запрос - не перебор ли... Хотя, народ не без героев.
Записан
Termit
Самовар
**
Offline Offline

Сообщений: 144



Просмотр профиля WWW
« Ответ #4 : Ноябрь 13, 2015, 01:18 »

Блин. Ну как же приятно поговорить с умным человеком. Улыбающийся
Та да, погорячился Улыбающийся

Вообще QSqlQuery ничего и никогда с запросом не делает он его, тупо, передает серверу в неизменном виде. Читать QSql вдумчиво.
Читал и вдумчиво Улыбающийся. Хотел уже читать исходники, а не документацию Qt т.к. в приложении не работает, а рядом в браузере работает тот же самый запрос. Пока не понял, что проблема в движке (libqt4-sql-sqlite).

PS: sqllite и рекурсивный запрос - не перебор ли... Хотя, народ не без героев.
Мне больше нравится Postgres. Но скажу, что sqlite вполне себе база и если она предоставляет какие-то функции, так чего бы и не использовать?
На больших записях не игрался, но дерево из 6К+ элементов строит и отбирает детей за 6 мс и меня вполне такое устраивает.
Записан

Человеческая глупость дает представление о бесконечности
(с) Иоанна Хмелевская
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 22.