Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: SQL code zum Prüfen auf Datenänderung

  Alt 4. Feb 2009, 00:25
Leider kann MySQL eine temporäre Tabelle nur einmal in einer Abfrage verwenden.

@alzaimar: Ist cnt jetzt tage?
SQL-Code:
select distinct id, tage
from (select id, wert, datediff(min(Datum), max(Datum)) AS tage
      from tabelle1
      group by id, wert) x
where x.tage = (select max(tage)
                from (select id, wert, datediff(min(Datum), max(Datum)) AS tage
                      from tabelle1
                      group by id, wert) y
                where y.id = x.id)
order by 1
Zitat von alzaimar:
...Noch was: Temporäre Tabellen wirken oft Wunder, speziell, wenn sie -wie hier- eine Query stark vereinfachen, die sonst eine komplexe Subquery mehrmals ausführen würde.
Ich danke dir für diesen mutigen Hinweis, ich verwende diesen Denkansatz auch häufiger und bin immer wieder positiv überrascht. Für solche Aussagen wird man hier ja auch häufiger mal gesteinigt. Aber wer es nicht glauben will, dem ist eben nicht mehr zu helfen.

MSSQL ist in dieser Hinsicht einfach performanter und flexibler. Leider ist MySQL hier etwas hinterweltlich.

Zitat von alzaimar:
...Ich erwarte im Übrigen eine Abarbeitungszeit (wenn der Index auf ID+Wert gesetzt ist) von unter einer Sekunde, falls die Query syntaktisch korrekt ist.
In MsSQL ja, in MySQL wäre ich mit solcher Aussage vorsichtig. Da dauert eine Abfrage, die MSSQL in 0 Sekunden erledigt, eventuell schonmal einige Minuten.
  Mit Zitat antworten Zitat