Seite 1 von 1

QSqlRelation auf primary key

Verfasst: 6. Oktober 2008 11:47
von zpmg
Hi,

ich programmiere gerade ein Aktenverwaltungsprogramm mit Qt und MySQL. Bis jetzt ging alles relativ problemlos, nur komme ich mit folgendem problem nicht weiter:

Ich habe u.a. zwei Tabellen. In einer sind die Personen gespeichert, in der anderen die Aufgaben, die mit den Personen verknüpft sind.

Personen
======
id int(11) auto_increment
name varchar(255)
forename varchar(255)
DOB date
und noch ein paar irrelevante...

Aufgaben
======
id
patient_id
task
und noch ein paar irrelevante...

Mit 'patient_id' referenziere ich auf 'id' in der Tabelle Patienten.

Das Ziel ist, dass ich nach Aufgaben suchen kann (also sowas: SELECT .... WHERE `task` = `Brief%`)
und eine Liste der Aufgaben mit den zugehörigen Namen der Personen bekomme.

Zur Zeit verwende ich das QSqlRelationModel. Ich schaffe es auch, so eine Liste zu erzeugen. Das Problem ist nur, dass ich dafür folgenden Befehl brauche:
model->setTable("Personen");
model->setRelation(0, "Aufgaben", "patient_id", "task");
welcher wiederrum die id Spalte mit task ersetzt, was dazu führt, dass ich die Daten mangels id nicht weiterverarbeiten kann.

Gibt es eine Chance, dass ich das mit dem QSqlRelationModel lösen kann oder muss ich auf das QSqlQueryModel umsteigen?

Ich danke im Vorraus!

Verfasst: 7. Oktober 2008 23:02
von Undefined
Ja - in dem du deine SQL Tabellen Struktur auch so gestaltest das sie einen INDEXES,PRIMARY KEY auf andere Tabellen oder Feld hat. Dein SQL Code weist diesen nicht auf.

Verfasst: 8. Oktober 2008 12:47
von zpmg
Ok es hat sich erledigt. Ich habe das jetzt mit dem QSqlQueryModel und einem INNER JOIN gelöst. Ich finde es aber Schade, dass das QSql(Relational)TableModel keine Möglichkeit für JOINs bietet.