Martin hein: Verknüpfungsfeld doppelt

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

  1. 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

    1. 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

      1. 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

        --
        "Love your nation - respect the others."
    2. 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

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      1. yo,

        gibt in irgendeinem SQL-Dialekt eigentlich die Möglichkeit zu sagen:

        keinen mir bekannten....

        Ilja