![]() |
Datenbank: mySQL • Version: 5 • Zugriff über: ZEOS
Ergebnismenge wahlweise auf zwei Tabellen
Hallo,
ich habe eine Tabelle Liste mit folgendem Aufbau: ID: integer, Primärschlüssel Detail1_ID: integer Detail2_ID: integer Detail1_ID und Detail2_ID binden an zwei Tabellen Detail1 und Detail2 mit jeweils den Feldern ID und Name. In Liste wird pro Datensatz nur ein Feld Detail1_ID oder Detail2_ID benutzt, das andere Feld enthält NULL. Ich möchte nun eine Ergebnismenge mit den Spalten ID und Name, wobei Name aus der Tabelle Detail1 oder Detail2 stammt, je nach dem welches Feld Detail1_ID oder Detail2_ID nicht NULL ist. Wer kann mir etwas auf die Sprünge helfen? Mit IF, CASE etc. hatte ich seither keinen Erfolg. Die Tabelle Liste könnte auch so aussehen: ID: integer, Primärschlüssel Detail_ID: integer Detail_Tab: integer // 1: Detail1, 2: Detail2 Gruß Andreas |
Re: Ergebnismenge wahlweise auf zwei Tabellen
SQL-Code:
SELECT ID, Detail1_ID AS Name, 1 AS Detail_Tab
FROM LISTE WHERE NOT Detail1_ID IS NULL UNION ALL SELECT ID, Detail2_ID AS Name, 2 AS Detail_Tab FROM LISTE WHERE NOT Detail2_ID IS NULL |
Re: Ergebnismenge wahlweise auf zwei Tabellen
Hallo,
das ging aber schnell.
SQL-Code:
ist wohl hier das Geheimnis.
UNION ALL
Vielen Dank, Andreas |
Re: Ergebnismenge wahlweise auf zwei Tabellen
Guten Morgen Andreas,
wenn deine beiden Detail-Tabellen Teil einer Gen-Spec-Relation wären, dann hättest du nur einen der beiden Fremdschlüssel in deiner Master-Tabelle. Hast du dein Datenmodell schon darauf hin überprüft? Grüße vom marabu |
Re: Ergebnismenge wahlweise auf zwei Tabellen
Hallo,
ich kann mit Deiner Frage leider nichts anfangen. Die beiden Detailtabellen speichern unterschiedliche Arten von Daten. Die "Master"-Tabelle ist bildet so eine Art Favoritenliste, in der Zeiger auf die die Detailtabellen gespeichert werden. So kann ich in einem DBGrid die Detais zu beiden (grundverschiedenen) Detail-Tabellen anzeigen. Hintergrund: Ich erstelle ein Programm, in dem Dokumente verwaltet werden. Die Infos zu den Dokumenten werden in einer Tabelle gespeichert. Eine weitere Funktion des Programm ist die Gruppierung von Dokumenten in Mappen. Jede Mappe ist ein Datensatz in einer Tabelle. Diese beiden Tabellen sind die Detailtabellen von oben. Das Programm soll eine Favoritenfunktion bieten, in der man Dokumente und Mappen, die man regelmäßig benötigt, an exponierter Stelle anzeigt. Diese Funktion habe ich mit dier oben aufgeführten Abfrage realisiert. Meine Datenbank speichert nur unabhängige Tabellen (zur Zeit jedenfalls noch!). Die Beziehungen werden erst durch die Anwendung hergestellt. Kannst Du mir erklären, was hinter Deiner Frage steckt? Gruß Andreas |
Re: Ergebnismenge wahlweise auf zwei Tabellen
Hallo Andreas,
zwei Detailtabellen und zwei exklusiv genutzte Fremdschlüssel - das roch für mich förmlich nach falsch implementierter Gen-Spec-Relation. Falls sich deine Rückfrage auf Gen-Spec bezieht, so verbergen sich dahinter Generalisierung und Spezialisierung - vielleicht kennst du diesen Beziehungstyp eher unter der Bezeichnung IS-A (Ist-Ein)? Ich verstehe zwar noch nicht, was einen Eintrag in deiner Liste zum Favoriten macht - die Existenz an sich oder eine statistische Auswertung, aber wenn ich dich richtig verstehe, dann besteht zwischen deinen Detailtabellen DOKUMENTE und MAPPEN auch noch eine 1:N Beziehung. Das würde ich je nach Randbedingung immer noch als GEN-SPEC-Beziehung implementieren, eventuell über eine rekursive Tabelle. Freundliche Grüße |
Re: Ergebnismenge wahlweise auf zwei Tabellen
Hallo,
nein, Dokumente und Mappen haben keine direkte Beziehung zueinander. Und rekursive Tabellen alla Strukturstückliste sind nicht gefragt. Kannst Du mir ein bisschen mehr zu der Gen-Spec erzählen oder ne gut Quelle nennen? Gruß Andreas |
Re: Ergebnismenge wahlweise auf zwei Tabellen
Zitat:
Zitat:
![]() Viel Glück mit deinem Projekt. |
Re: Ergebnismenge wahlweise auf zwei Tabellen
Hallo,
ja, ich denke, dass Du keine richtige Idee von meiner Anwendung hast. Das Thema Tabellenbeziehungen (referenzielle Integrität...) habe ich zu Paradox-Zeiten (ObjectPAL, Delphi 3) benutzt. Mit mySQL habe ich mir das bisher gespart. Aber ich bin ja noch sooo unerfahren... Mein Projekt steht übrigens ![]() Und ich suche noch Unterstützung! :hi: Gruß Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz