Hallo 
Ich habe eine zentrale Tabelle "profil" und zahlreiche weitere Tabellen, z.B. "vor_nachname" und "spitzname".
In der "profil"-Tabelle befindet sich eine individuelle Kennung und eine ID für jedes Profil.
Die anderen Tabellen haben auch eine Spalte Kennung, allerdings ist diese mit der ID gefüllt aus der "profil"-Tabelle.
Bei der Abfrage allerdings wird nach der Kennung gesucht (nicht nach der ID). Nun soll passend zu dieser Kennung die ID aus der "profil"-Tabelle gesucht werden und mit dieser die restlichen Daten aus den zahlreichen anderen Tabellen.
Das ganze natürlich möglichst in einer Abfrage. Ich habe mir folgendes zusammengebastelt:
Das Problem dabei ist, dass in der WHERE Bedingung für jede Tabelle einzeln ein SELECT durchgeführt wird. Kann man das irgendwie vereinfachen?
Ich habe es so probiert, aber das funktioniert nicht:
Ich hab so das Gefühl, man kann das besser mit einem JOIN lösen, aber irgendwie hab ich das nicht hingekriegt...
Desweiteren müssen die Daten in so vielen Tabellen liegen, da sich die einzelnen Angaben zu verschiedenen Zeiten ändern können und die alten Daten erhalten bleiben müssen. Um nicht mächtig viel Platz zu verschwenden werden nur die Daten neu gespeichert, die sich auch verändert haben. Wenn wir schon dabei sind: Gibt es eventuell hier eine bessere Lösung?
Vielen Dank
semmelkuh
Ich habe eine zentrale Tabelle "profil" und zahlreiche weitere Tabellen, z.B. "vor_nachname" und "spitzname".
In der "profil"-Tabelle befindet sich eine individuelle Kennung und eine ID für jedes Profil.
Die anderen Tabellen haben auch eine Spalte Kennung, allerdings ist diese mit der ID gefüllt aus der "profil"-Tabelle.
Bei der Abfrage allerdings wird nach der Kennung gesucht (nicht nach der ID). Nun soll passend zu dieser Kennung die ID aus der "profil"-Tabelle gesucht werden und mit dieser die restlichen Daten aus den zahlreichen anderen Tabellen.
Das ganze natürlich möglichst in einer Abfrage. Ich habe mir folgendes zusammengebastelt:
Code:
SELECT
vor_nachname.data AS "Name", spitzname.data AS "Spitzname"
FROM
vor_nachname, spitzname
WHERE
vor_nachname.kennung = (SELECT id FROM profil WHERE kennung = "N7fzK0") AND spitzname.kennung = (SELECT id FROM profil WHERE kennung = "N7fzK0")
ORDER BY
vor_nachname.timestamp DESC, spitzname.timestamp DESC;
Das Problem dabei ist, dass in der WHERE Bedingung für jede Tabelle einzeln ein SELECT durchgeführt wird. Kann man das irgendwie vereinfachen?
Ich habe es so probiert, aber das funktioniert nicht:
Code:
WHERE vor_nachname.kennung AND spitzname.kennung = (SELECT id FROM profil WHERE kennung = "N7fzK0")
Code:
WHERE vor_nachname.kennung, spitzname.kennung = (SELECT id FROM profil WHERE kennung = "N7fzK0")
Ich hab so das Gefühl, man kann das besser mit einem JOIN lösen, aber irgendwie hab ich das nicht hingekriegt...
Desweiteren müssen die Daten in so vielen Tabellen liegen, da sich die einzelnen Angaben zu verschiedenen Zeiten ändern können und die alten Daten erhalten bleiben müssen. Um nicht mächtig viel Platz zu verschwenden werden nur die Daten neu gespeichert, die sich auch verändert haben. Wenn wir schon dabei sind: Gibt es eventuell hier eine bessere Lösung?
Vielen Dank
semmelkuh