Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

AW: Auf ein Attribut doppelt zugreifen?

  Alt 24. Nov 2012, 23:56
Du meinst in der Tabelle "nachname"-> nachname1 und nachname2, sowie in der Tabelle "vorname"-> vorname1, vorname2?
Jupp.
Du holst aus den Tabellen "vorname" und "nachname" für beide Personen raus und benennst sie im SELECT um.
(table1.vorname AS vorname1, table1.nachname AS nachname1, table2.vorname AS vorname2, table2.nachname AS nachname2, oder wie auch immer)
Innerhalb deines SQL-Aufrufest kann man über Namespace/Tabellenname/Tabellenalias zwar geziehtl auf "Felder" einer bestimmten Tabelle zugreifen, aber die zurückgegebene "Tabelle" (Result-Tabelle) hat erstmal grudsätzlich keine Namespace/Tabellenname/Tabellenalias mehr drinnen, so daß jedes Feld einen eindeutigen Namen benötigt.
Genauso wie man innerhalb des SQL-Befehls ein Namespace/Tabellenname/Tabellenalias angeben muß, wenn ein Feld nicht eindeutig zuordenbar ist, weil es in mehreren der geladenen Tabellen vorkommt.

Aber dann haben alle Autoren leere E-Mails, Telefon usw... das darf mach doch nicht zulassen, oder?
Und was ist, wenn du von einem Autor doch mal eine E-Mail oder gar seine Telefonnummer hast?
Nja, praktisch gemeinsame Dinge würden in die "Personennamen"-Tabelle reinkommen, also mindestens alles, was zum Namen gehört.
(Vor-, Nachname, Titel, Anrede)
Was ist eigentlich mit zweiten Vornamen und Dergleichen?

Du könntest ja eine Kontaktdaten-Tabelle machen (eMail, Telefon, Adresse, ...) und dann dem Entleiher als NOT NULL zuordnen, sowie den Autor als NULL, fall doch mal Eine dazukommt.
Bzw. Eben die "Personen" zusammen in eine Tabelle mit einer NULL--Referenz auf die Kontakte und von Autor, sowie Entleiher nur eine Referenz auf die Personentabelle.

Ach ja, wie oft kommt es denn vor, daß Bücher gleich heißen?
Die Buchtiteltabelle ist ja praktisch auch unnötig kompliziert, anstatt den Titel direkt in Buch drinnen zu haben.
$2B or not $2B
  Mit Zitat antworten Zitat