Имеется такой код:
QSqlQuery qu(*pDB); // pDB - база данных
qu.exec("SELECT `CitiesAndCommunities`.`CityOrCommName`, `BuildingTypes`.`TypeName`, `TableBuildings`.`CountGov`, `TableBuildings`.`CountComm`, `TableBuildings`.`CountPrivate`"
"FROM `CitiesAndCommunities`, `TableBuildings`, `BuildingTypes` "
"WHERE `TableBuildings`.`CityOrCommID` = `CitiesAndCommunities`.`CityID` and `TableBuildings`.`BuildTypeID` = `BuildingTypes`.`TypeID`");
Есть некий метод.
void DBFacade::setMainTable(QTableView *tbl)
{
model = new QSqlTableModel(this, *pDB);
model->select();
tbl->setModel(model);
}
Если я сразу укажу, какую таблицу показывать...
model->setTable("BuildingTypes"); // Есть такая табличка с данными
model->select();
То выведет содержимое таблицы. Это мне пока не нужно.
Мне нужно указать результирующую таблицу с первого приведенного кода. Это возможно? Просто выводит, обычно, таблички с индексами, внешними ключами. А хотелось бы выводить сразу с данными, привязанными к ним. Подходит для таких целей QSqlTableModel?
// Извините, писал в спешке, потому и, может, что-то недорассказал. Если что, я скину, необходимые данные, если это поможет.
Поскольку QSqlTableModel
унаследована от QSqlQueryModel
, а последняя, в свою очередь, имеет метод QSqlQueryModel::setQuery()
, то выполнение произвольного запроса и последующее наполнение модели-таблицы данными кажется вполне реальным. Единственное, в QSqlTableModel
данный метод переопределён и объявлен как protected
с пометкой в справке, общий смысл которой сводится к тому, что использовать его не то чтобы не рекомендуется, но и не приветствуется. Иными словами, QSqlTableModel
предназначена для работы непосредственно с таблицами, но никак не с произвольными выборками.
В рассматриваемой ситуации я бы порекомендовал использовать т.н. представления (view), которые в некотором смысле позволяют эмулировать таблицу из произвольного запроса. В этом случае можно будет использовать QSqlTableModel
в штатном режиме. Впрочем, есть и ограничения, но они уже будут исходить от самой СУБД.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как можно создать dql запрос к базе в SonataAdminУ меня есть mySQL запрос, его нужно перевести в dql, или как-то заюзать его в таком формате, но я не знаю...
Есть окно приложение которое содержит листНужно, чтобы каждый элемент листа отображался как песня в плеере
Здравствуйте! Пишу общий чатПри каждом подключении Сервер создает новый поток, там проинициализированы: