mwolodzko
24.07.2015, 08:09:33
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?
nospor
24.07.2015, 08:15:16
A w jaki sposob ty te numery teraz zwiekszasz?
Pyton_000
24.07.2015, 08:51:33
Zapewne robisz to tak (a przynajmniej ja bym tak zrobił

)
SELECT MAX(numer)+1 AS next FROM baza WHERE YEAR(FROM_UNIXTIME(DATA)) = YEAR(NOW());
I masz kolejny nr. w roku

Przy nowym roku samo się zacznie od 1
mmmmmmm
24.07.2015, 09:15:40
I już wpisujesz same Nulle

Trzeba obsłużyć Null dla pierwszego numeru w roku.
Pyton_000
24.07.2015, 09:52:08
IFNULL(MAX(numer), 0)
maly_swd
24.07.2015, 11:49:02
http://forum.php.pl/index.php?s=&showt...t&p=1165095 To powinno Ci pomóc... wystarczy dodać kolumnę YEAR.
nospor
24.07.2015, 11:58:47
@maly przeciez juz jest kolumna z datą... nie ma sensu dodawac kolejnej sztucznej
maly_swd
24.07.2015, 12:07:19
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;)
nospor
24.07.2015, 12:09:55
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?
maly_swd
24.07.2015, 15:11:50
Aby inni wiedzieli, że są inne rozwiązania danego zagadnienia.
Czy jest coś w tym złego?
mwolodzko
24.07.2015, 19:49:17
Dziękuję za pomoc

Takie zapytanie działa w 100% jak należy
INSERT INTO tabela (numer) SELECT IFNULL(MAX(numer), 0)+1 FROM tabela WHERE YEAR((DATA)) = YEAR(NOW())";
nospor
24.07.2015, 21:04:05
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.