Hi,
ich hab ein SQL Problem, wo ich grad etwas auf dem Schlauch stehe.
Ich habe eine Tabelle "Master", eine "Child" und eine "Outputs" Tabelle.
Ein Eintrag in der Child-Tabelle gehört immer zu nur einem einzigen Master, aber ein Master kann beliebig viele Childs haben. (1:n verknüpfung)
Genauso mit der Outputs-Tabelle, ein Output gehört immer zu einem Child, aber ein Child kann beliebig viele Outputs haben.
Die verknüfungen sind über je eine connection-tabelle gelöst in der einfach die 2 Primary-Key-IDs der Tabellen stehen.
Ich habe also diese Tabellen:
Die ID-Spalten heißen immer wie die Tabelle, nur mit "id_" davor (id_Master, id_Child, id_Output).
So, ich möchte jetzt eine SQL Abfrage machen in der ich eine ID von einem Master als WHERE Angeben kann und alle Outputs erhalte die über die Childs mit dem Master verknüpft sind.
Die Childs bekommen ist ja kein Problem, das geht einfach via:
Klar könnte ich jetzt hergehen und für jedes Child im Ergebnis der Abfrage wiederrum eine SQL-Abfrage machen.. aber das können dann echt viele werden, und das würde ich gern vermeiden. Nur... geht das?
Und eine andere Problemstellung wäre eine eine art Baumstruktur.
Die Outputs können beliebig viele Outputs als "Input" haben. Also ein Output gehört zu einem Child, setzt sich aber aus vielen Outputs anderer Childs zusammen (n:m verbindung)
Es ergibt also einen Baum der am ende auf einen Output zuläuft.
Jetzt würde ich gern eine Abfrage machen wo ich nur eine OutputID angebe und ALLE Inputs im Baum erhalte..
Meine aktuelle lösung ist wieder ganz viele einzel-Querys zu machen, aber das ist eben nur bedingt gut...
Hat da irgendwer eine Idee wie ich das lösen kann?
Aya
PS: Im Anhang ist ein Bild was das ganze etwas verdeutlichen soll.
PS2: Habe das gleiche auch hier schonmal gefragt:
http://www.delphi-forum.de/viewtopic.php?t=100226
Da wurde gesagt ich brauche "Hierarchische Selects", aber die gibt es wohl im MySQL nicht... aber evtl gibt es ja doch noch einen anderen weg?
ich hab ein SQL Problem, wo ich grad etwas auf dem Schlauch stehe.
Ich habe eine Tabelle "Master", eine "Child" und eine "Outputs" Tabelle.
Ein Eintrag in der Child-Tabelle gehört immer zu nur einem einzigen Master, aber ein Master kann beliebig viele Childs haben. (1:n verknüpfung)
Genauso mit der Outputs-Tabelle, ein Output gehört immer zu einem Child, aber ein Child kann beliebig viele Outputs haben.
Die verknüfungen sind über je eine connection-tabelle gelöst in der einfach die 2 Primary-Key-IDs der Tabellen stehen.
Ich habe also diese Tabellen:
Code:
Master Master_Child_Connection Child Child_Output_Connection Output
So, ich möchte jetzt eine SQL Abfrage machen in der ich eine ID von einem Master als WHERE Angeben kann und alle Outputs erhalte die über die Childs mit dem Master verknüpft sind.
Die Childs bekommen ist ja kein Problem, das geht einfach via:
Code:
SELECT * FROM Child JOIN(Master_Child_Connection) USING(`id_Child`) JOIN(Master) USING(`id_Master`) WHERE `id_Master` = 42
Und eine andere Problemstellung wäre eine eine art Baumstruktur.
Die Outputs können beliebig viele Outputs als "Input" haben. Also ein Output gehört zu einem Child, setzt sich aber aus vielen Outputs anderer Childs zusammen (n:m verbindung)
Es ergibt also einen Baum der am ende auf einen Output zuläuft.
Jetzt würde ich gern eine Abfrage machen wo ich nur eine OutputID angebe und ALLE Inputs im Baum erhalte..
Meine aktuelle lösung ist wieder ganz viele einzel-Querys zu machen, aber das ist eben nur bedingt gut...
Hat da irgendwer eine Idee wie ich das lösen kann?
Aya
PS: Im Anhang ist ein Bild was das ganze etwas verdeutlichen soll.
PS2: Habe das gleiche auch hier schonmal gefragt:
http://www.delphi-forum.de/viewtopic.php?t=100226
Da wurde gesagt ich brauche "Hierarchische Selects", aber die gibt es wohl im MySQL nicht... aber evtl gibt es ja doch noch einen anderen weg?
Comment