Название: QSqlRelationalTableModel + LEFT JOIN Отправлено: Maz от Июнь 18, 2007, 12:31 У меня такая ситуация:
Нужно выполнить запрос с LEFT JOIN. В получиченных данных есть вторичные ключи. Их и хотелось бы "правильно" отображать, т.е. чтобы значения брались со справочников. Каким образом это можно сделать подскажите пожалуйста. Название: QSqlRelationalTableModel + LEFT JOIN Отправлено: Kainit от Июнь 18, 2007, 14:25 Я немного не в тему, но скажите мне, почему у меня не получается вытащить форены из QSqlRelationalTableModel?
Подключаюсь к базе (MySQL), всё хорошо, всё нормально. Делаю QSqlRelationalTableModel *model = new QSqlRelationalTableModel ( this, db); model->setTable("testTable"); for(int i=0; i<model->columnCount(); i++) { editor->append((model->headerData(i,Qt::Horizontal)).toString()); if( !model->relation(i).isValid () ) editor->append("INVALID"); else { editor->append(model->relation(i).displayColumn()); editor->append(model->relation(i).indexColumn()); editor->append(model->relation(i).tableName()); } } И несмотря на то что в таблице есть 2 форена, я всё равно по всем колонка получают INVALID... Или QSqlRelationalTableModel не берёт форены из базы, а работает только с теми что я назначил? Но это было бы странно. Есть у кого-нибудь такая же проблема? Название: QSqlRelationalTableModel + LEFT JOIN Отправлено: SABROG от Июнь 18, 2007, 14:44 Kainit: а где ты вызываешь model->setRelation() ?
Название: QSqlRelationalTableModel + LEFT JOIN Отправлено: Kainit от Июнь 18, 2007, 16:30 Цитата: "SABROG" Kainit: а где ты вызываешь model->setRelation() ? Я нигде не вызываю! У меня на MySQL база в которой все связи проставлены. Foreign Keys, называются. И по идее, используя MySQL C API, эти связи очень легко получить... А Qt-шный драйвер на MySQL именно этим API и пользуется. И я, честно говоря, твёрдо уверен был что связи должны были быть восстановлены... Именно поэтому я и спросил Цитировать "Или QSqlRelationalTableModel не берёт форены из базы, а работает только с теми что я назначил?" Может ли кто-нибудь поклясться, что при инициализации QSqlRelationalTableModel по подключению к реальной базе имеющей связи, модель не будет иметь никаких связей. Название: QSqlRelationalTableModel + LEFT JOIN Отправлено: SABROG от Июнь 18, 2007, 16:38 Посмотри исходники Qt и поклянись самому себе :)
Название: QSqlRelationalTableModel + LEFT JOIN Отправлено: Kainit от Июнь 18, 2007, 16:46 Посмотрел... Похоже что так и есть, но это же неправильно...
Вместо того чтобы всё произошло само собой, я должен какими-то сторонними средствами получить все связи, потом создать QSqlRelationalTableModel и проставить все связи вручную..... А как я могу получить связи, если QSqlDatabase не предоставляет таких механизмов?! Кто-нибудь, скажите, как получить информацию о Foreign Keys в Qt ? |