Prośba o pomoc w stworzeniu efektywnego zapytanie SQL

0

Mam tabelę "parametry" z następującymi kolumnami:

  • parametr
  • wartosc
  • data_zapisu

Dane są zapisywane co jakiś czas i stare parametry nie są nadpisywane, tylko są tworzone nowe rekordy przy każdym zapisie. Dane mają być przechowywane w celu późniejszego tworzenia wykresów. Potrzebuję do tego odczyt ostatnio zapisanej wartości dla danego parametru, przy czym interesowałoby mnie pojedyncze zapytanie dla wielu różnych parametrów.

Przychodzi mi do głowy zapytanie w stylu:

SELECT parametr, wartosc FROM parametry 
WHERE (parametr='par1' AND data=(SELECT MAX(data_zapisu) FROM parametry WHERE parametr='par1')
 OR (parametr='par2' AND data=(SELECT MAX(data_zapisu) FROM parametry WHERE parametr='par2') ... OR ...

ale parametrów o które chcę pytać może być wiele np. 20. Chodzi mi o najefektywniejszy sposób na pobranie takich danych (ostatnich wartości dla podanych parametrów).

1

Może zrób podzapytanie z MAX(data) z grupowaniem po parametrze i do niego joinuj.

0

Może jet to myśl:) Spróbuję i dam znać, czy się udało

0

Użyłem następującego zapytania:

SELECT t1.* FROM parametry t1 NATURAL JOIN (
 SELECT parametr, MAX(data_zapisu) AS data_zapisu
  FROM parametry GROUP BY parametr
) t2 WHERE t1.parametr='par1' OR t1 t1.parametr='par2'

i działa zadowalająco:) Dziękuję za pomoc.

0

Niestety nie mam pomysłu jak inaczej zrobić to zapytanie bez NATURAL JOIN. Czy można by prosić o dogłębniejsze wyjaśnienie lub przykład?

1 użytkowników online, w tym zalogowanych: 0, gości: 1