Autor Beitrag
Kossy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 53



BeitragVerfasst: Do 13.09.12 20:51 
Hallo zusammen !

Ich beziehe mich in meiner Frage auf diesen Link: www.oc-s.com/tutorials/sql/tuto34.htm

Dort ist folgendes SQL Beisiel aufgeführt (Es zeigt die Kunden mit den höchsten Kontoständen an ihren Orten):

ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
SELECT nachname, ort, konto
       FROM kunde dieser_kunde
       WHERE konto =
       (SELECT MAX(konto)
               FROM kunde
               WHERE ort = dieser_kunde.ort)
       ORDER BY ort



Dazu habe ich jetzt eine konkrete Frage. Die Unterabfrage wird ja für jede in Frage kommende Kandidatenzeile aus der äußeren Frage einmal jeweils ausgeführt.

Im Beispiel handelt es sich um Ortschaften. Für jeden Ort wird jetzt die Unterabfrage ausgeführt. Wird jetzt eine Ortschaft (z.B. Hamburg), die öfters in der äußeren Abfrage als Tupel auftritt, immer wieder überschrieben, sobald eine passendere Ortschaft zur Unterabfrage gefunden wurde? Denn eine Ortschaft darf ja durch diesen Abfragetypen nur einmal im Endergebnis vorkommen bzw. aufgenommen werden.


Viele Grüße
Kossy

Moderiert von user profile iconNarses: Code- durch SQL-Tags ersetzt
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 14.09.12 07:34 
Ich schätze durch die Optimierung wird
ausblenden Quelltext
1:
2:
3:
SELECT MAX(konto)
               FROM kunde
               WHERE ort = dieser_kunde.ort

genau einmal als
ausblenden Quelltext
1:
2:
3:
SELECT ort,MAX(konto) as Konto
               FROM kunde
               Group by Ort

ausgeführt und dann mit der äußeren Abfrage "gejoint"

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS