AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Ergebnismenge wahlweise auf zwei Tabellen

Ergebnismenge wahlweise auf zwei Tabellen

Ein Thema von Andreas H. · begonnen am 14. Aug 2007 · letzter Beitrag vom 15. Aug 2007
Antwort Antwort
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#1

Ergebnismenge wahlweise auf zwei Tabellen

  Alt 14. Aug 2007, 18:03
Datenbank: mySQL • Version: 5 • Zugriff über: ZEOS
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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Ergebnismenge wahlweise auf zwei Tabellen

  Alt 14. Aug 2007, 18:09
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
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Ergebnismenge wahlweise auf zwei Tabellen

  Alt 14. Aug 2007, 18:22
Hallo,

das ging aber schnell.

UNION ALL ist wohl hier das Geheimnis.


Vielen Dank, Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Ergebnismenge wahlweise auf zwei Tabellen

  Alt 15. Aug 2007, 06:39
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
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Ergebnismenge wahlweise auf zwei Tabellen

  Alt 15. Aug 2007, 09:31
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Ergebnismenge wahlweise auf zwei Tabellen

  Alt 15. Aug 2007, 15:17
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
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Ergebnismenge wahlweise auf zwei Tabellen

  Alt 15. Aug 2007, 18:00
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Ergebnismenge wahlweise auf zwei Tabellen

  Alt 15. Aug 2007, 19:48
Zitat von Andreas H.:
nein, Dokumente und Mappen haben keine direkte Beziehung zueinander.
Dann habe ich dich scheinbar völlig missverstanden, als du geschrieben hast, dass Dokumente zu Mappen gruppiert würden. Aber du hast auch geschrieben, dass du unabhängige Tabellen speicherst und die Beziehungen alleine durch das Programm herstellen würdest. Ich hoffe du weißt was du tust. Vielleicht ist es auch nur ein Kommunikationsproblem.

Zitat von Andreas H.:
Kannst Du mir ein bisschen mehr zu der Gen-Spec erzählen oder ne gut Quelle nennen?
Vielleicht solltest du dir den passenden Wikipedia-Artikel durchlesen, bevor ich dich mit Fachliteratur bewerfe.

Viel Glück mit deinem Projekt.
  Mit Zitat antworten Zitat
Benutzerbild von Andreas H.
Andreas H.

Registriert seit: 3. Mär 2006
Ort: Schopfloch
163 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Ergebnismenge wahlweise auf zwei Tabellen

  Alt 15. Aug 2007, 21:26
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 hier

Und ich suche noch Unterstützung!

Gruß Andreas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz