Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Sortowanie i wyświetlanie największej pozycji z bazie
Giluś
post 3.01.2019, 22:46:13
Post #1





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Cześć, mam problem mam bazę danych mniej więcej taką..

id | numer | nazwa
1 | 444/2018 | abc
2 | 445/2018 | aaa
3 | 1/2019 | bbb
4 | 2/2019 | ccc

I chciałbym teraz pobrać najnowszy wynik z kolumny "NUMER" czyli w tym przypadku 2/2019, w jaki sposób to zrobić, zakładając, że może zdarzyć się taka sytuacja, że większe "ID" wcale nie będzie oznaczało najnowszego "NUMER"


Pozdrawiam wink.gif
Go to the top of the page
+Quote Post
trueblue
post 3.01.2019, 23:13:28
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


To co "masz", to tabela, nie baza danych.

  1. SELECT MAX(CONCAT(SUBSTRING_INDEX(numer,"/",-1),".",SUBSTRING_INDEX(numer,"/",1))) FROM tabela


Proponuję jednak przebudować tabelę, aby przechowywać numer faktury i rok w odrębnych polach.


--------------------
Go to the top of the page
+Quote Post
Giluś
post 3.01.2019, 23:28:47
Post #3





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Hej, dzięki za odpowiedź, ale nie działa zbytnio..

Zobacz sam: http://sqlfiddle.com/#!9/08d90c/1
Go to the top of the page
+Quote Post
Tomplus
post 4.01.2019, 07:07:55
Post #4





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Zadziałało bardzo dobrze, tylko że dla string, a nie na number.

Dlatego zostaje Ci tylko -> utworzenie tymczasowej tabeli gdzie rok i numer będą dodane jako INT a nie STRING.
Go to the top of the page
+Quote Post
trueblue
post 4.01.2019, 08:07:55
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Poprawka:
  1. SELECT numer FROM tabela
  2. ORDER BY 1*SUBSTRING_INDEX(numer,"/",-1) DESC,1*SUBSTRING_INDEX(numer,"/",1) DESC
  3. LIMIT 1


Ten post edytował trueblue 4.01.2019, 08:10:26


--------------------
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 Wersja Lo-Fi Aktualny czas: 19.04.2024 - 01:49