Marfi Geschrieben 8. August 2005 Teilen Geschrieben 8. August 2005 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
zirri Geschrieben 8. August 2005 Teilen Geschrieben 8. August 2005 ja, indem du statt dem stern explizit alle anderen 1395 spalten auffuehrst gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 8. August 2005 Teilen Geschrieben 8. August 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Marfi Geschrieben 8. August 2005 Autor Teilen Geschrieben 8. August 2005 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bmg4ever Geschrieben 8. August 2005 Teilen Geschrieben 8. August 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bmg4ever Geschrieben 8. August 2005 Teilen Geschrieben 8. August 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.