Ludger: Bestimmte Daten aus DB auslesen bereitet Problem

Beitrag lesen

Hi,

Klar kann es das, aber ich betrachte es aus stilistischer Perspektive gegenüber der Alternative DISTINCT als die schlechtere Wahl. Wenn wir allerdings nicht einer Meinung sind, daß Aggregation eine natürliche Begleiterscheinung von GROUP BY ist, dann sind unsere Sichtweisen eben unterschiedlich.

Ok, da zu zu den eher wenigen gehoerst, bei denen es mich nicht in meiner Meinung bestaerkt bzw. egal ist, wenn ein Dissenz festgestellt wird (der Mann aus Karlsruhe faellt mir da noch ein), bearbeite ich den Sachverhalt noch einmal wie folgt:

Gegeben ist eine Datentabelle 'DT_1' eines RDBMSs mit den Datenfeldern 'DF_1', 'DF_2' und 'DF_3'. Zu betrachten sind die beiden unetrschiedlichen auf der GROUP BY-Klausel bzw. DISTINCT-Klausel basierenden Abfragemoeglichkeiten um die Anforderung asu https://forum.selfhtml.org/?t=99736&m=609738 moglichst fachgerecht zu bearbeiten.

mit DISTINCT:
die Abfrage koennte lauten:
SELECT DISTINCT
 DF_1,
 DF_2,
 DF_3
FROM
 DT_1

Vorteile:

  • das Schluesselwort DISTINCT stellt fuer den Programmierer klar, dass Dubletten aus der zurueckgegeben Datensatzmenge entfernt werden
    Nachteile:
  • es gibt einen "DISTINCT-Missbrauch" bei denen, die die Datenzugriffsschicht bearbeiten (DISTINCT ist selten bis nie erforderlich)

mit GROUP BY:
die ABfrage koennte lauten:
SELECT
 DF_1,
 DF_2,
 DF_3
FROM
 DT_1
GROUP BY
 DF_1,
 DF_2,
 DF_3

Vorteile:
Nachteile:

  • bestimmte DBMSe (mis)interpretieren "SELECT DF_1, DF_2, DF_3 FROM DT_1 GROUP BY DF_1", anstatt wie z.B. der M$SQLServer eine Fehlermeldung zu servieren
  • das SELECT-Statement wird wegen der Wiederholung der in der abgefragten Datenfelder in der GROUP BY-Klausel laenger als erforderlich

Zusammenfassung:
Beide Herangehensweisen sind ideologisch/stilistisch OK, die MySQL-Gemeinde mag mit der DISTINCT-Version besser versorgt sein, die stolzen Betreiber von Oracle und M$SQL Datenservern mit der GROUP BY-Variante, die auch dem DISTINCT-Missbrauch weniger erfahrener Kraefte keine weitere Nahrung gibt.

in dieem Sinne,
Gruss,
Ludger