QSqlRelationalTableModel Abfrage, Union

Alles rund um die Programmierung mit Qt
Antworten
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

QSqlRelationalTableModel Abfrage, Union

Beitrag von Chri »

Hi
Habe folgende funktionierende QSqlQuery-Abfrage:

Code: Alles auswählen

SELECT * FROM Abschnittsschichten INNER JOIN Bauteilschichten on Bauteilschichten.SCH_ID = Abschnittsschichten.Sch_ID WHERE BT_ID = 36
UNION
SELECT sch_ID, null as Asch_ID, null as Ab_ID, null as Len, Bezeichnung,d,Lambda, Gruppe, null as SchichtNr, 
       null as Nr1, null as Nr2, null as Nr3, null as Nr4, null as Nr5, null as Nr6, null as Nr7   
       FROM Bauteilschichten WHERE BT_ID = 36
ORDER BY
sch_id, schichtnr
(null as Nr1 etc, weil die beiden Tabellen nicht gleiche Spaltenanzahl haben, UNION dies jedoch verlangt)

Das möchte ich nun sozusagen in ein QSqlRelationalTableModel übersetzen.
Funktionierend geschafft habe ich nur den Teil:

Code: Alles auswählen

		 qmod->setTable("Bauteilschichten");
                 qmod->setFilter(QString("BT_ID =").append(QString::number(BT_ID)));
                 qmod->setRelation(qmod->fieldIndex("SCH_ID"),QSqlRelation("Abschnittsschichten","SCH_ID","*"));
                 qmod->select();
Wie geht das "UNION" etc. ?

LG
Chri
Die Sprache des Technikers ist die Skizze
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

Re: QSqlRelationalTableModel Abfrage, Union

Beitrag von Chri »

Ok, wenn nichts Besseres kommt, ich hab es so gemacht:

Den ganzen Query-Text habe ich in ein QSqlQuery verpackt und mit setquery ans model geschickt:

Code: Alles auswählen

QString querytext ( "SELECT * FROM ........);
QSqlQuery qte (querytext);
qmod->QSqlQueryModel::setQuery(qte);
qmod->select();
funktioniert jedenfalls
LG
Chri
Die Sprache des Technikers ist die Skizze
Antworten