Diskussion:Join (SQL)

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 1 Jahr von Paul Setzer in Abschnitt Erläuterung zu "JOIN Abteilung ON" fehlt
Zur Navigation springen Zur Suche springen

Fragwürdiger Artikel[Quelltext bearbeiten]

Meines Erachtens hat der Artikel erhebliche Mängel. Er ist offenbar durch die Übersetzung des Artikels über den Join in SQL in der englischen Wikipedia entstanden. Schon dieser enthält irreführende Aussagen.

Im Detail:

  1. Aussagen sind sachlich falsch. Zum Beispiel ist die Visualisierung des inneren und äußeren Verbunds durch Mengendiagramme irreführend. Der natürliche Verbund ist nur in einem sehr speziellen Sonderfall mit der Schnittmenge der beiden Tabellen identisch, nämlich wenn beide dasselbe Schema haben. Dies ist aber ein Spezialfall, in dem man nicht den natural join als Operator verwenden würde, sondern intersect. Insbesondere trifft diese Visualisierung für das Beispiel mit den Tabellen Angestellter und Abteilung im Artikel nicht zu. Die Schnittmenge hätte eine Anzahl von Elemente die kleiner gleich der Anzahl der beiden Tabellen ist. Der innere Verbund im Beispiel hat 5 Elemente, die Tabelle Abteilung aber nur 4!
  2. Durch die Übersetzung sind Formulierungen entstanden, die schwer verständlich sind. Beispiel: "Ein Programmierer deklariert eine JOIN-Anweisung, um mögliche Zeilen für einen Join zu identifizieren. Ein wahres Prädikat resultiert in der Ausgabe in einem entsprechenden Format, einem Datensatz oder einer temporären Tabelle." Mit dem Prädikat ist offenbar die Join-Bedingung gemeint, das wahre Prädikat bedeutet, dass das Prädikat für eine bestimmte Kombination von Datensätzen wahr wird (für andere falsch) und dann wird ein Datensatz im Ergebnis ausgegeben. Ob dies in einer temporären Tabelle geschieht hat mit dem Join nichts zu tun und was ein entsprechendes Format sein soll bleibt offen. Der Satz lautet im englischen Original "If the evaluated predicate is true, the combined row is then produced in the expected format, a row set or a temporary table." - etwas besser, aber immer noch unklar was ein "format" sein soll. Und ist ein "row set" was anderes als eine "temporary table"??
  3. Der Artikel enthält schon im englischen Original eine Menge von Aussagen, die für das Thema nicht relevant sind. Dies betrifft insbesondere alle Aussagen zur Implementierung von Joins. Der SQL-Standard ist die Spezifikation einer Sprache und schreibt keine bestimmte Implementierung vor. In einen Artikel über den Join in SQL gehört meine Erachtens diese Spezifikation. Das Thema, wie der Join implementiert wird verdient einen eigenen Artikel.
  4. Die Literaturangaben sind aus dem englischen Original übernommen. Meines Erachtens gibt es bessere Quellen in der englisch-sprachigen Literatur; insbesondere aber auch sehr gute deutsche Lehrbücher, auf die man verweisen sollte.

Ich habe vor, den Artikel demnächst durch eine grundlegend überarbeitete Fassung zu ersetzen.

--Paul Setzer (Diskussion) 14:05, 8. Mai 2019 (CEST)Beantworten

mach das. --NameDerGeht2018 (Diskussion) 06:08, 9. Mai 2019 (CEST)Beantworten
Ich habe die überarbeitete Fassung am 12.5.2019 hochgeladen. Die obige Kritik bezieht sich auf die Fassung vor dem 12.5.2019. --Paul Setzer (Diskussion) 10:27, 12. Mai 2019 (CEST)Beantworten

Erläuterung zu "JOIN Abteilung ON" fehlt[Quelltext bearbeiten]

Die Rolle von "Abteilung" in "SELECT * FROM Mitarbeiter SELECT * FROM Mitarbeiter JOIN Abteilung ON Mitarbeiter.AbtId = Abteilung.AbtId; Mitarbeiter.AbtId = Abteilung.AbtId;" sollte erläutert werden. Leider findet man im Internet viele vergleichbare Beispiele (alle abgeschrieben?) ohne gute Erklärungen. Wikipedia sollte anders sein!

Konkret: Sollten da evtl. die beiden Spalten "Mitarbeiter.AbtId" und "Abteilung.AbtId" durch eine Spalte "Abteilung" ersetzt werden (zumal die Zeilen diese Spalten ja per "Mitarbeiter.AbtId = Abteilung.AbtId" identisch sind?

--193.175.194.185 08:41, 14. Apr. 2023 (CEST) --132.199.174.252 08:50, 14. Apr. 2023 (CEST)Beantworten

Ich habe versucht im Artikel den Unterschied zwischen JOIN ON und JOIN USING etwa genau zu erläutern. Okay?

--Paul Setzer (Diskussion) 08:59, 17. Apr. 2023 (CEST)Beantworten