AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi "Bedingte" Abfrage über mehrere Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

"Bedingte" Abfrage über mehrere Tabellen

Ein Thema von Tyrael Y. · begonnen am 21. Apr 2008 · letzter Beitrag vom 23. Apr 2008
Antwort Antwort
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Re: "Bedingte" Abfrage über mehrere Tabellen

  Alt 23. Apr 2008, 10:11
Zitat von Tyrael Y.:
Code:
SELECT * FROM MainTabelle
LEFT JOIN TabelleAllgemein ON MainTabelle.ID = TabelleAllgemein.ID
LEFT JOIN TabelleTyp1 ON MainTabelle.ID = TabelleTyp1.ID
WHERE TabelleAllgemein.ID = 1


SELECT * FROM MainTabelle
LEFT JOIN TabelleAllgemein ON MainTabelle.ID = TabelleAllgemein.ID
LEFT JOIN TabelleTyp2 ON MainTabelle.ID = TabelleTyp2.ID
WHERE TabelleAllgemein.ID = 2


SELECT * FROM MainTabelle
LEFT JOIN TabelleAllgemein ON MainTabelle.ID = TabelleAllgemein.ID
LEFT JOIN TabelleTyp3 ON MainTabelle.ID = TabelleTyp3.ID
WHERE TabelleAllgemein.ID = 3
Damit hast du doch alles. Geliefert werden aber nur Spalten aus deiner MainTabelle. Den Join auf TabelleTyp3 kannst du dir also sparen.

Und du joins die ID aus Maintabelle mit der ID aus TabelleAllgemein. Da frag ich mich erstmal, wie sieht denn dein PK in TabelleAllgemein aus? Und falls es eine 1:1 Beziehung darstellen soll (sprich ID ist auch PK in Tabelleallgemein), warum machst du denn überhaupt 2 Tabellen, und legst nicht einfach alle Spalten in eine.

Da TabelleTyp1-3 unterschiedlicher Struktur sind, macht ein Gesamtergebnis in einem Select in meinen Augen überhaupt keinen Sinn. Du vergleichst Äpfel mit Birnen, und versuchst beides in einen Korb zu schmeissen.

Zu deiner Normalisierung: Du entscheidest über Typ in deiner TabelleAllgemein, welche TypTabelle als Referenztabelle gewählt werden soll. Ich würds andersrum machen. Ich würde in jeder TypTabelle eine Referenz auf TabelleAllgemein setzen (also gerade umgekehrt). Somit kann dir nicht passieren, dass wenn einer die Typ Id in TabelleAllgemein ändert, du plötzlich auf eine andere Tabelle referenzierst. Das ist eine Riesengefahrenquelle, und die Homogenität deiner Daten ist nicht mehr gewährleistet.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:50 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