Russian Qt Forum

Qt => Базы данных => Тема начата: Alin Glow от Апрель 14, 2012, 19:24



Название: [РЕШЕНО] QSqlRelation и представление с аггрегатной функцией (sqlite)
Отправлено: Alin Glow от Апрель 14, 2012, 19:24
Здравствуйте.
Имеется представление, созданное на основе запроса с агрегатной функцией. Не могу такой столбец вставить в QSqlRelationalTableModel с помощью QSqlRelation.
Представление (добавляет столбик тех, кто ссылается на текущую запись из другой таблицы):
Код
SQL
CREATE VIEW [view_maintenance_trolleybus] AS
SELECT maintenance.id, maintenance.name, group_concat(trolleybus.id)
FROM maintenance
LEFT OUTER JOIN trolleybus
ON maintenance.id = trolleybus.maintenance_id
GROUP BY maintenance.id

Вот так пытаюсь заменить в другой таблице:
Код:
model->setRelation( 3, QSqlRelation( "view_maintenance_trolleybus", "id", "group_concat(trolleybus.id)" ) );
model->Select() проходит с ошибкой: "near "(": syntax error Unable to execute statement"
Использую SQLite, как я понял, поименовать столбцы в представлении нельзя. Тот же самый запрос работает как задумано с QSqlQueryModel, но вариант не утраивает, так как хочется редактируемую таблицу.

UPD: [РЕШЕНО]
В SQLite возможно переименовать столбцы в представлении, если переименовать их внутри образующего SELECT с помощью оператора AS.
Код
SQL
SELECT maintenance.id, maintenance.name, group_concat(trolleybus.id) AS "newname"
Теперь данное представление можно использовать в Qt.