Как отобразить содержимое нескольких QSqlTableModels в одном QTableView?

У меня есть таблица MySql, назовем ее x:

CREATE TABLE x (
    Id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
    A int unsigned NOT NULL,
    B int,
    FOREIGN KEY (A) REFERENCES y(Id)
);

Затем у меня есть другая таблица, назовем ее y:

CREATE TABLE y (
    Id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
    First varchar(255),
    Last varchar(255)
);

Я хочу отобразить таблицу x в одном QTableView и вместо столбца A из таблицы x я хочу отобразить столбцы Первый и Последний из таблицы y из строки, чей Id равен A из таблицы x.

Есть ли у вас какие-либо идеи? Дайте мне знать, если мое объяснение недостаточно ясно.


person Community    schedule 17.06.2013    source источник


Ответы (1)


Вы можете использовать QSqlQueryModel с запросом на соединение sql:

QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT x.Id, y.First, y.Last, x.B FROM x "
                "LEFT JOIN y ON x.A = y.Id");

QTableView *view = new QTableView;
view->setModel(model);
view->show();
person hank    schedule 18.06.2013