Verknüpfungsfeld doppelt
Martin hein
- datenbank
0 Ilja0 Martin Hein0 Tom0 Ilja
Hallo Forum,
in meiner DB gibt es zwei Tabellen. In beiden Tabellen gibt es das
Feld 'site_id', dass eine Datensatz eindeutig kennzeichnet.
ich verwende folgendes MySQL-Statement, um zwei Tabellen miteinander
zu verknüpfen:
--------------------------------------------------------------------
SELECT *
FROM content
JOIN structure
ON content
.site\_id
= structure
.site\_id
WHERE content
.site\_id
=5
--------------------------------------------------------------------
Das ergebnis ist soweit zufriedenstellen: Ist ein Datensatz in
beiden Tabellen vorhanden, ist das Ergebnis der verknüpfte Datensatz.
Das einziger, was mir nicht gefällt, ist das in dem Datensatz 2X
das Feld 'site_id' vorhanden ist. Das erscheint mir allerings
logisch, weil ich ja mit "SELECT *" dafür sorge, dass alle Felder
aus beiden Tabellen selektiert werden sollen. Die einzige mir
bekannte Möglichkeit nur ein Feld 'site_id' in meinem Ergebnis zu
haben, ist statt mit
"SELECT *"
"SELECT
content.site_id, content.feld1, content.feld2
structure.feld1, structure.feld2
"
explizit zu bestimmen, welche Felder ich in meinem Datensatz haben
möchte.
Gibt es eine einfache Möglichkeit, das vernüpfte Feld nur einmal auftauchen zu lassen ?
Danke für Deine Tipp und
beste gruesse,
martin
yo,
Gibt es eine einfache Möglichkeit, das vernüpfte Feld nur einmal auftauchen zu lassen ?
man macht das genauso, wie du es letztlich gemacht hast, nämlich die spalten explizit hinzuschreiben, die man auch wirklich haben will. fachlich nennt sich das dann Projektion. das * symbol für die projektion zu werden, ist in aller regel sowieso keine gute idee und wird meitens nur für testzwecke oder der einen schnellen ad-hoc benutzt.
Ilja
Hallo Ilja,
ich mache das auch lieber so, dass ich explizit benenne,
was ich in meinem Ergebnissatz haben möchte. "*" hat den
Vorteil, dass ich das Statement nicht anpassen muss, wenn
sich die Tabellenstruktur ändert.
Ich kann aber damit leben, dass das Feld in meinem
Ergebnissatz vorhanden ist. Ich fasse es einfach
nicht an ;)
Danke und
beste gruesse,
martin
Moin!
"*" hat den Vorteil, dass ich das Statement nicht anpassen muss, wenn sich die Tabellenstruktur ändert.
Es hat den Nachteil, dass du nicht merkst, dass dein Query von einem nicht an die neue Tabellenstruktur angepaßten Teil deiner Datenbankschicht durchgeführt wurde.
- Sven Rautenberg
Hello,
gibt in irgendeinem SQL-Dialekt eigentlich die Möglichkeit zu sagen:
ich möchte alle Spalten außer a, b, c ...
?
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
yo,
gibt in irgendeinem SQL-Dialekt eigentlich die Möglichkeit zu sagen:
keinen mir bekannten....
Ilja