Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Reset numeracji z nowym rokiem
mwolodzko
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 15.07.2010

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


Mam taką tabelę:

id(autoincrement, unique) | numer(int) | data (timestamp)

W drugiej kolumnie zapisywane są kolejne numery. W jaki sposób zrobić żeby ze zmianą daty na nowy rok numeracja w kolumnie 'numer' zaczynała się od początku?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A w jaki sposob ty te numery teraz zwiekszasz?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





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

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


Zapewne robisz to tak (a przynajmniej ja bym tak zrobił (IMG:style_emoticons/default/tongue.gif) )
  1. SELECT MAX(numer)+1 AS next FROM baza WHERE YEAR(FROM_UNIXTIME(DATA)) = YEAR(NOW());

I masz kolejny nr. w roku (IMG:style_emoticons/default/smile.gif) Przy nowym roku samo się zacznie od 1
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





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

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


I już wpisujesz same Nulle (IMG:style_emoticons/default/smile.gif)
Trzeba obsłużyć Null dla pierwszego numeru w roku.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





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

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


IFNULL(MAX(numer), 0)

(IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
maly_swd
post
Post #6





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


http://forum.php.pl/index.php?s=&showt...t&p=1165095
To powinno Ci pomóc... wystarczy dodać kolumnę YEAR.
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@maly przeciez juz jest kolumna z datą... nie ma sensu dodawac kolejnej sztucznej
Go to the top of the page
+Quote Post
maly_swd
post
Post #8





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


Tak, wiem że jest kolumna z datą. Ale aby zadziałał tamten przykład potrzebna jest kolumna YEAR...

Tamten sposób z MAX +1 jest ok, pod warunkiem, że nie skasujesz ostatniego rekordu i nie dodasz nowego. Wtedy ten nowy dostanie nr ze starego;)
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Problem juz dawno rozwiązany z tym co jest bez zadnych dodatkowych zmian, a ty podajesz przyklad, ktory wymaga tworzenia sztucznych tworów... po co?
Go to the top of the page
+Quote Post
maly_swd
post
Post #10





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


Aby inni wiedzieli, że są inne rozwiązania danego zagadnienia.

Czy jest coś w tym złego?
Go to the top of the page
+Quote Post
mwolodzko
post
Post #11





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 15.07.2010

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


Dziękuję za pomoc (IMG:style_emoticons/default/smile.gif)
Takie zapytanie działa w 100% jak należy
  1. INSERT INTO tabela (numer) SELECT IFNULL(MAX(numer), 0)+1 FROM tabela WHERE YEAR((DATA)) = YEAR(NOW())";


Ten post edytował mwolodzko 24.07.2015, 19:49:46
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Aby inni wiedzieli, że są inne rozwiązania danego zagadnienia.

Czy jest coś w tym złego?
W tym wypadku tak, te inne rozwiązanie nie ma tu sensu i nie a co go pchac na sile.
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.08.2025 - 23:39