Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wybranie tylko zmieniających się danych
tommyexlee
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.06.2009

Ostrzeżenie: (0%)
-----


Witam,
Mam problem z wyborem odpowiednich wierszy w MySQL i po prostu brak mi już pomysłów. Nie ukrywam, że do bycia ekspertem jeszcze mi dużo brakuje.
Mam taką tabelę:
Kod
dzien | cena
  1   | 50
  2   | 50
  3   | 60
  4   | 60
  5   | 90
  6   | 90


Potrzebuję wybrać tylko takie wiersze, których cena zmienia się o więcej niż 20 w stosunku do poprzedniego dnia.
Próbowałem robić w stylu:
Kod
SELECT dzien AS param, cena, (cena - (SELECT cena FROM tabela WHERE dzien < param ORDER BY dzien DESC LIMIT 1)) AS roznica FROM tabela WHERE roznica > 20

ale wywala mi błąd: Error Code: 1054. Unknown column 'roznica' in 'where clause'

Czy możecie mi pomóc?
Z góry dzięki.

Pozdrawiam,
Tommyexlee
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. [...] HAVING roznica > 20;
Go to the top of the page
+Quote Post
dmateo
post
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 19.05.2009

Ostrzeżenie: (0%)
-----


Spróbuj ewentualnie tak, zachowasz czytelny kod i moze bedzie nawet szybsze:

  1. SELECT t2.dzien
  2. FROM #tabela t1
  3. LEFT JOIN #tabela t2 on t1.dzien = (t2.dzien-1)
  4. WHERE ( t2.cena - t1.cena ) > 20
Go to the top of the page
+Quote Post
tommyexlee
post
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.06.2009

Ostrzeżenie: (0%)
-----


wow to takie proste? (IMG:style_emoticons/default/ohmy.gif) dzięki za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #5





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


Przy założeniu, że masz wszystkie dni. Wystarczy jedna "dziura" i cały misterny plan ...
Go to the top of the page
+Quote Post
tommyexlee
post
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.06.2009

Ostrzeżenie: (0%)
-----


Dobra wszystko działa ładnie pięknie, ale chciałbym jeszcze rozszerzyć funkcjonalność... Załóżmy, że mam tabelę:
Kod
dzien | cena | ile kupiono
  1   |  50  |  2
  2   |  50  |  3
  3   |  55  |  2
  4   |  60  |  1
  5   |  65  |  5
  6   |  65  |  3
  7   |  65  |  2
  8   |  70  |  5
  9   |  75  |  2
  10  |  80  |  3
  11  |  85  |  1
  12  |  85  |  1

Potrzebuję wyświetlić informację, przez jaki czas cena rosła oraz ile w sumie (w czasie tego wzrostu) kupiono tego towaru. Wynik końcowy powinien być taki:
Kod
dzien poczatku | dzien konca | cena poczatkowa | cena koncowa | ile kupiono
      2        |     5       |        50       |     65       |     11
      7        |     11      |        65       |     85       |     13

Kolumnę 'ile kupiono' pewnie trzeba załatwić funkcją SUM(), tylko nie za bardzo wiem po czym grupować wyniki.. nie mogę znaleźć żadnego rozsądnego kryterium grupowania. Próbowałem dorzucić warunek GROUP BY (roznica_dni=1), ale przecież ten warunek spełniony jest dla każdego wiersza, więc zapytanie mi zwróci wszystko...
Czy moglibyście pomoć?
Z góry dziękuję.

Pozdrawiam,
Tommyexlee
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 20:18