Andreas Korthaus: Problem für MySQL Profis

Beitrag lesen

Hi Klaus!

Es ist eine Unsitte, wenn man beispielsweise so etwas formuliert:
SELECT  name, strasse,  SUM(wasauchimmer)
  FROM tabelle
  GROUP BY name

ich muss gestehen dass ich hiermit ein kleines Problemchen habe. Ich will z.B. den Artikelnamen abfragen, mit dem geringsten Preis in der Tabelle. Ich mache das jetzt so:

SELECT Artikelname FROM table ORDER BY Preis LIMIT 1

Nur habe ich was gegen ORDER BY, denn wenn ich mich nicht irre ist hierzu ein FullTable-Scan notwendig. Zumindest ist das so wenn ich 2 Datensätze abfragen würde, denn dann muss er alle Werte 'Preis' in der Tabelle miteinander vergleichen. Ich weiß jetzt nicht ob der Query-Optimizer von mySQL den Minimal-Wert auch anderes errechnen kann, ich könnte es mir vorstellen, weiss es aber nicht.

Wie formuliert man denn sowas am besten?

Wobei mir aufgefallen ist dass sich da bei MySQL evtl was geändert hat, ich verwende Version 3.23.54, udn wenn ich da so eien Abfragwe mache:

SELECT Artikelname, MIN(Preis) FROM Table

geht das nicht(logisch!). Aber wenn ich jetzt noch ein Gruop BY Artikelname hinzufüge, dann bekomme ich den niedrigsten Preis für jeden Artikel, das ist es ja auch nicht was ich will.  Sicher könnte ich da dann auch wie oben Ordnen und limitieren, nur ist das dann am Ende dasselbe.

Viele Grüße
Andreas