Einzelnen Beitrag anzeigen

Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#16

Re: "Bedingte" Abfrage über mehrere Tabellen

  Alt 23. Apr 2008, 10:50
Zitat von NormanNG:
Hi,
statt
...
meinst du wohl
WHERE TabelleAllgemein.TYP = 3
Ja natürlich. War ein Schreibfehler.


Zitat von alzaimar:
Ich rege mich nicht auf, nur ist die Frage komisch, weil die Antwort schon längst fest steht.
Naja, wie ich oben erwähnt habe, gäbe es ja verschiedene Wege zu meinen Ergebnissen zu kommen.
Vielen Dank für die SQL-Anweisung. Zwei Fragen bitte noch dazu.

1. Du hast es in zwei verschiedenen Formen geschrieben
Code:
cast (NULL as VarChar (80)) as [Farbel]
...
NULL as [Farbe]
hat das eine bestimmte Bewandnis, vielleicht, daß man beim ersten mal erwähnen des Feldes den Typ und die Größe angeben muss?

2. Ich verstehe es doch richtig das durch zB.
Code:
NULL as [Farbe]
diese Feld "virtuell" zu dieser Tabelle hinzugefügt wird, oder?

Vielen Dank nochmal, sieht auf den ersten Blick, sehr vielversprechend aus.


Zitat von mkinzler:
Du müsstest doch i.d.Z. wissen, das der neue Programmierertyp keinen Bock hat sich mit Grundlagen zu befassen, sich gedanklich in das Problem zu vertiefe, oder gesagtes an sein Problem anzupassen, er erwartet dass du ihm die Lösung fix und fertig lieferst.
Genau dessalb habe ich ja auch die erste Lösung, die auch funktionieren würde, direkt einprogrammiert und mich nicht damit auseinandergesetzt, ob es keine eleganter Lösung gibt. Danke für deinen nicht passenden Post.


Zitat von Jelly:
Damit hast du doch alles. Geliefert werden aber nur Spalten aus deiner MainTabelle. Den Join auf TabelleTyp3 kannst du dir also sparen.
Ich dachte auch zuerst, daß ich alle Felder die ich haben möchte einzeln angeben müsste, aber ein
Code:
SELECT * FROM....LEFT JOIN....
hat dazu geführt, daß ich alle Felder aus allen Tabellen erhalten habe.
Vielleicht Access spezifisch?

Zitat von Jelly:
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.
Ja es ist eine 1:1 Beziehung zwischen den beiden Tabellen.
Die Tabellen werden nicht nur von mir benutzt. Es gibt Fälle bei denen man nur die
Daten aus TabelleAllgemein braucht.

Zitat von Jelly:
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.
Ich möchte halt alle Daten möglichst effizient holen.
Bei der Behandlung im Delphi Code erzeuge ich je nach Typ eine Objekt aus einer passenden Klasse.
Die Klassen haben einen gemeinsamen Vorfahren. Mein Korb ist die Objektliste und es ist nicht schlimm,
dort verschieden Typen (Äpfel, Birnen) zu haben, da ich es ein "Obstkorb" (der Vorfahr wäre Obst) reintue.
Ich brauche sie halt im Programm zur späteren Behandlung.

Zitat von Jelly:
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.
Im Grunde hast du Recht, ich könnte es umbauen und es wäre auch richtig so.
Der Typ kann sich aber nie ändern. Ein Datensatz der angelegt wurde behält immer seinen Typen.
Er kann gelöscht werden, aber nie seinen Typen ändern.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat