na początek tabelka (oczywiście skrócona do istotnych elementów)

tabela produkty
  • prod_id
  • prod_waluta
  • prod_cena

Wyszukuję wszystkie (lub część) produktów z tej tabeli i chcę posortować względem ceny, pomnożonej przez odpowiedni kurs (walutowy).
Zapytanie zostanie wykorzystane w php i można przyjąć dla uproszczenia, że mamy 4 waluty (wal1, wal2, wal3, i moja_wal) oraz dane "kursy" to np $kurs1 (dla przeliczenia z wal1 na moja_wal), $kurs2 (dla wal2 -> moja_wal), $kurs3 (dla wal3 -> moja_wal). Jak powinno wyglądać zapytanie by uwzględniało sortowanie względem przeliczonej ceny na daną walutę (moja_wal)?

Ja wymyśliłem tego typu zapytanie:


  1. SELECT * FROM `pictures` ORDER BY
  2. (CASE `prod_waluta`
  3.  
  4. WHEN 'wal1' THEN `prod_cena`*$kurs1
  5.  
  6. WHEN 'wal2' THEN `prod_cena`*$kurs2
  7.  
  8. WHEN 'wal3' THEN `prod_cena`*$kurs3
  9.  
  10. ELSE `prod_cena` <---- ten warunek dla moja_wal
  11.  
  12. END) ASC


Tylko nie jestem pewien czy jest to optymalne zapytanie. Docelowo baza powinna być wydajna do kilku (nie więcej niż 4-5) milionów rekordów produktów, ale póki co (na rok, dwa - będę miał czas na przetestowanie, przemyślenie itp jak najlepszych rozwiązań) wystarczy zapytanie optymalne do max 100 000 rekordów.

Pozdrawiam smile.gif