Moin, mal wieder eine Frage zu SQL: Angenommen, ich habe dummerweise zwei verschiedene Tabellen mit ziemlich gleichen Feldern, die ähnliche Dinge beschreiben. Zum Beispiel Ding_Typ1 und Ding_Typ2. Eine dritte Tabelle Ding_Index enthält die Fremdschlüssel fk_Ding, die zu einer der beiden Tabellen passen. Also eine Art Index. Es gibt zu jedem Eintrag in Ding_Index entweder einen Eintrag in Ding_Typ1 ODER in Ding_Typ2. Ich bräuchte jetzt ein SQL-Statement, das den Index komplett durchgeht und die Felder entweder aus Ding_Typ1 oder Ding_Typ2 holt. Geht das evtl. über ein JOIN?
Du machst zwei Select-Abfragen und "verkettest" die Ergebnisse mit union: SELECT * FROM Ding_Typ1 WHERE ... UNION SELECT * FROM Ding_Typ2 WHERE ...
Horst schrieb: > Eine dritte Tabelle Ding_Index enthält die Fremdschlüssel > fk_Ding, die zu einer der beiden Tabellen passen. Also eine Art Index. > Es gibt zu jedem Eintrag in Ding_Index entweder einen Eintrag in > Ding_Typ1 ODER in Ding_Typ2. Das ist aber ziemlich ungeschickt. Denn die Datenbank kann so nicht so einfach sicherstellen, daß es nicht zufälligerweise einen Ding_Typ1 und einen Ding_typ2 mit der selben Nummer gibt. Normal macht man das daher eher so, daß es im Ding_Index zwei Felder gibt. Das eine Feld referenziert auf Ding_typ1 und das andere auf Ding_typ2. Damit sind die Primärschlüssel von Ding_typ1 und Ding_typ2 unabhängig voneinander.
select ifnull(dbf1,dbf2) dbf from fk_table left join db1table on db1table.id = fk_table.id left join db2table on db2table.id = fk_table.id
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.