Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> sortowanie zapytania
mihmih
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

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


witam,

mam pytanie, możliwe że głupie, ale zawsze warto pytaćsmile.gif

Czy jest możliwe posortowanie wierszy w zapytaniu wg czasu jak długo one sa już w tym zapytaniu? Albo do zapytania dodać kolumnę typu DATA ktora określa czas kiedy dany wiersz "wskoczył" do zapytania"?

Nie wiem czy jest to jasne, chodzi o magazyn części. Jest kolumna ilość, która cały czas się zmienia. Raz stan rośnie, raz maleje, gdy spadnie poniżej pewnej wartości stanu alarmowego trafia na listę rzeczy do zamówienia. I na tej liście do zamówienia chciałbym mieć właśnie sortowanie wg elementu, który najdłużej jest już na tej liście.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Wrzucaj sobie do kolumny datę ost. aktualizacji stanu i po niej sortuj
Go to the top of the page
+Quote Post
mihmih
post
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

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


to nie pomoże. Bo element nr 1 trafia na listę do zamówienia jak ilość spadnie poniżej 10 sztuk. Jest 9 i trafia na listę. Jest na 1 pozycji. Ale za tydzień stan wynosi już tylko 7, i mimo że sa nowsze pozycje na liście, to znowu ten element wędrowałby na 1 pozycje po aktualizacji stanu...
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


No to ustawiaj tą datę jak spadnie poniżej zadanego progu.
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Skoro liczba wynosi 7, to w ogóle nie wyświetlasz go na liście do zamówienia.
Aktualizować datę możesz więc zawsze, ale wyświetlać tylko te o liczbie <=10, według właśnie tej daty.

Ten post edytował trueblue 10.06.2016, 12:46:18


--------------------
Go to the top of the page
+Quote Post
mihmih
post
Post #6





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

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


postaram się to bardziej dokładnie wyjaśnić...

jest tabela z elementami, do każdego z nich jest przypisany stan alarmowy.
jest tabela z dostawami (kolumny: ilosc, id_elementu)
jest tabela z pobraniem z magazynu (kolumny: ilosc, id_elementu)

mamy kwerende stanów magazynowych:

id_elementu
stan aktualny (suma dostaw - suma pobrań)

mamy kwerende stanów alarmowych (...where stan aktualny < stan alarmowy)

i chciałbym aby element nr 1 po wskoczeniu na kwerende stanów alarmowych zajmował 1 pozycję. Później element 2 pojawia sie na tej liście, więc element 1 spada na 2 pozycję. Pózniej jest dostawa elementu 1 i wypada on z listy alarmowej. Ale znowu stan spada poniżej stanu alarmowego i w tym momencie znowu widzimy element 1 na szczycie listy dopóki jakiś inny element nie wskoczy znowu na ta listę.

Czy takie sortowanie jest możliwe? Bo nie mam pojęcia jak określić tą datę wg której miałbym to sortować, tymbardziej że kwerenda jest dynamiczna i co chwile wszystko się w niej zmienia...
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Rozwiązanie podał Ci Pyton_000 + warunek, który Ci podałem.
Dodajesz w tabeli elementów pole z datą aktualizacji stanu alarmowego.

Element nr 1 spada poniżej 10 w: 2016-06-11 11:00
Lista wygląda tak:
Element nr 1 2016-06-11 11:00

Element nr 2 spada poniżej 7 w: 2016-06-11 11:10
Póki co najdłużej jest element nr 1, więc lista wygląda:
Element nr 2 2016-06-11 11:10
Element nr 1 2016-06-11 11:00

Dostawa elementu nr 1. Nie aktualizujesz daty stanu alarmowego, ale nie wyświetlasz tego elementu na liście alarmowej (data więc nie interesuje Cię).
Na liście pozostaje tylko element nr 2.
Lista:
Element nr 2 2016-06-11 11:10

Znów jest pobranie elementu nr 1 i jego stan spada poniżej 8 w: 2016-06-11 11:20 (aktualizujesz datę stanu alarmowego).
Lista wygląda tak:
Element nr 1 2016-06-11 11:20
Element nr 2 2016-06-11 11:10

Ten post edytował trueblue 11.06.2016, 10:10:53


--------------------
Go to the top of the page
+Quote Post
mihmih
post
Post #8





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

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


ale jak przypisać datę pojawienia się rekordu w zapytaniu? niestety nie mam takiej wiedzy. Wiem jedynie jak można w tabeli ustawić datę stworzenia rekordu (ADD COLUMN createdtime DATETIME NULL DEFAULT CURRENT_TIMESTAMP)

Jeśli ktoś by mi powiedział jak to zrobić w zapytaniu byłbym wdzięczny.

Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


W zapytaniu wyświetlającym listę stanów alarmowych nie aktualizujesz tej daty.

Powinno to być odrębne zapytanie aktualizujące tabelę elementów, kiedy ilość spada poniżej stanu alarmowego.
Albo powinno to być zrobione w aplikacji, albo jako trigger w tabeli pobrań.

Gdybyś miał pobrania i dostawy w jednej tabeli, to jeszcze można kombinować z id dotyczącego zmiany stanu, zamiast daty.

Ten post edytował trueblue 11.06.2016, 11:04:34


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 09:20