Distinct über mehrere Tabellen

Vielen Dank Luzie, Du bist klasse!

Deine Lösung klappt wunderbar

Zum Glück sind die Aufgaben die die 6 Tabellen erledigen klar umrissen,
und werden es wohl so tun müssen.
Beim nächsten Projekt wird alles anders ;)
 
Hallo Hillary und alle,
freut mich, dass die PHP-Lösung klappt. Da es jetzt funktioniert, dient jede weitere Diskussion ja eigentlich nur noch der Wissenschaft und dem Spaß am Theorisieren - also ab jetzt nur noch für Interessierte:

UNION (ohne ALL) eliminiert automatisch doppelte Datensätze, sofern alle Felder identisch sind - in diesem Fall nicht der Fall. Für prinzipientreue Verfechter reiner SQL-Lösungen gäbe es demnach (IMHO) für nicht-subselect-fähige DBMS nur noch die Option "Temporäre Tabelle":
Code:
CREATE TEMPORARY TABLE tempTabelle TYPE=HEAP
  SELECT
    id, selbst, stats, spielnr, datum, ...... 
  FROM
    tabelle1 
  WHERE
    spielnr != '0' 
UNION
  SELECT
    id, selbst, stats, spielnr, datum, ...... 
  FROM
    tabelle2
  WHERE
    spielnr != '0' 
UNION
  SELECT
    id, selbst, stats, spielnr, datum, ...... 
  FROM
    tabelle3 
  WHERE
    spielnr != '0' 
UNION
  etc...
dann
Code:
SELECT * FROM tempTabelle GROUP BY spielnr
Jetzt die Auswertung in PHP, danach noch
Code:
DROP TABLE tempTabelle
Wie gesagt: Nur für echte Prinzipienreiter, denn das sind ja jetzt 3 DB-Anfragen/Befehle und es ist fraglich, ob das gegenüber einer PHP-Lösung sinnhaft ist.

Wie Luzie schon schrieb, sind Subselects erst ab MySQL 4.1 möglich. Ein Upgrade lohnt sich meiner Meinung nach unbedingt - sofern man das selbst bestimmen kann und nicht nehmen muss, was der Provider bietet. Seit wir bei uns umgestellt haben frage ich mich, wie ich früher ohne Subselects leben konnte... ;)

Grüße,
Martin
 
Hi Martin,

die Lösung ist wirklich interessant. Ich hatte auch schon etwas in die Richtung gedacht, die Daten in einer Tabellen zwischenzuspeichern. Aber, wie Du auch schreibst, ich denke mal, dass ein php-Script nicht so auf die Performance geht, zumal ja die Union-Abfragen ansich schon etwas Leistung brauchen.

In Sachen Subselect gebe ich Dir vollkommen recht. Ich kann es mir ohne auch nicht mehr vorstellen. Da ich weitestgehend mit MS-basierten Datenbanken (Access) zu tun habe, war das auch nie ein Problem, auch das Arbeiten mit views oder Access-Abfragen. ;)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück