Zum Inhalt springen

MySQL: Doppelte Spaltennamen bei Select mit join


Marfi

Empfohlene Beiträge

Hallo zusammen,

ich habe 2 sehr große Tabellen (jeweils ca 80 Spalten und 400000 Datensätze)

Über die ersten 7 Spalten sind die Datensätze mit einander verknüpft. (Ich weiß das Datenbank Design ist alles andere als gut aber ich habe mir das nicht ausgedacht und kann es auch nicht mehr ändern).

Wenn ich jetzt eine Abfrage starte

z.B.


SELECT * FROM `set_3` join `set_2` using (__Date_Announced, __Date_Effective, Acquiror__CUSIP, Acquiror_Name, Target_CUSIP, Target_Name, _Perc_of_Shares_Acq)

Dann tauchen diese 7 Spalten im Ergebnis natürlich 2mal auf. Kann ich das irgendwie verhindern ohne dass ich alle Spaltennamen expliziet im Select-Statement (statt dem *) angeben muss?

Link zu diesem Kommentar
Auf anderen Seiten teilen

irgendwie habe ich das gefühl das hier mehr und mehr leute sind, die noch nicht gelernt haben wie man auf Fragen antwortet oder Feedback gibt.

Wir sollten strafen für solche kommentare wie jenen von Zirri verhängen ^^

oder habe ich wieder was falsch verstanden ? ^^

@marfi, ich kenne da leider keine möglichkeit, was nicht heiße muss das es keine gibt.

table.* bringt dir nicht viel, weil du ja gerade aus beiden Infos haben willst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmmm...

ich hab grade mal gesucht aber nichts spezielles gefunden. Mein Gedanke war es eventuell angeben zu können, dass alle Spalten bis auf ... selektiert werden sollen.

Das würde dein Prozedere ja erheblich vereinfachen. Allerdings weiß ich nicht, ob das irgendwie mit NOT möglich ist. Konkrete Beispiele oder ähnliches habe ich leider nicht gefunden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Genau dass soll ja verhindert werden! Hatte ich aber auch in der Frage geschrieben. Kann es sein dass ein Natural Join das Problem löst?

das hatte ich auch zwischen, aber im mysql-manual (http://dev.mysql.com/doc/mysql/de/join.html) klingt das ganze irgendwie nicht so, als würden die doppelten Spalten dann ignoriert, sondern als könnte man sich einfach das "USING" sparen, was ja auch nicht unpraktisch wäre.

-------------------------------------------------------------------------------------------------------------------------------

Der NATURAL

JOIN zweier Tabellen ist definiert als semantisch identisch äquivalent zu einem INNER JOIN oder einem LEFT JOIN mit einer USING-Klausel, die alle Spalten nennt, die in beiden Tabellen existieren.

-------------------------------------------------------------------------------------------------------------------------------

Allerdings kling das z.B. in folgender allgemeinen SQL-Quelle schon ganz anders und nach genau dem, was du gesucht hast:

http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/chap7.htm#natural%20join

-------------------------------------------------------------------------------------------------------------------------------

# Natural Join

Verknüpft die beiden Tabellen über die Gleichheit aller gleichlautenden Spalten. Gleichlautende Spalten werden im Ergebnis nur einmal angezeigt. Haben die Tabellen keine gleichlautenden Spalten, wird der Natural Join zum Cross Join. Gibt es nur eine gleichlautende Spalte, so ist der Natural Join ein Inner Join mit anschließender Projektion, bei der gleichnamige Spalten ausgeblendet werden.

Für den Natural Join gibt es keinen speziellen SQL92-Befehl. Er wird bei Bedarf aus einem Inner Join mit anschließender Projektion erzeugt.

-------------------------------------------------------------------------------------------------------------------------------

Ich denke der Natural Join ist einen Versuch wert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...