Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MySQL: Doppelte Spaltennamen bei Select mit join

Empfohlene Antworten

Veröffentlicht

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?

ja, indem du statt dem stern explizit alle anderen 1395 spalten auffuehrst

gruss

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.

ja, indem du statt dem stern explizit alle anderen 1395 spalten auffuehrst

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?

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.

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.