[SQL] Zmiana numerów ID na podstawie daty i godziny |
[SQL] Zmiana numerów ID na podstawie daty i godziny |
1.12.2019, 20:54:10
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.09.2019 Ostrzeżenie: (0%) |
Witam. Mam problem z tabelką SQL, na który nie mogę znaleźć odpowiedzi w wyszukiwarce, dlatego postanowiłem napisać ten temat. W jednej kolumnie "data" mam daty i godziny (np. 2003-04-15 14:11:01), zaś w drugiej kolumnie "kolej" chciałbym porobić numery – wiersz o najwcześniejszej dacie i godzinie miałby mieć numer 1 i tak po kolei do ostatniego o najpóźniejszej dacie i godzinie.
|
|
|
1.12.2019, 22:20:16
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 836 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
|
|
|
6.12.2019, 20:32:48
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.09.2019 Ostrzeżenie: (0%) |
Dzięki za odpowiedź, ale to co wkleiłeś chyba jedynie wypisze mi wiersze z tabeli, a mi chodzi o zmianę w tabelce SQL, aby nadać nowe numery na tej zasadzie:
Tabelka ma ponad 11 tys. rekordów, więc ręczne wpisywanie chyba odpada, bo by się z tydzień z tym zeszło… |
|
|
6.12.2019, 20:44:05
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
-------------------- |
|
|
7.12.2019, 07:57:26
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
A w jakim celu potrzebujesz tą numerację bezpośrednio w tabelce?
-------------------- |
|
|
7.12.2019, 19:33:19
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.09.2019 Ostrzeżenie: (0%) |
Dzięki za pomoc w znalezieniu, zadziałał ten kod:
A w jakim celu potrzebujesz tą numerację bezpośrednio w tabelce? Postanowiłem połączyć ze sobą trzy tabelki SQL z artykułami w jedną. W jednej najnowszej tabelce są artykuły od 2012 do obecnie, w drugiej archiwalne od 2003 do 2012, a w trzeciej na razie niedostępnej publicznie od 2005 do 2012. Wiadomo, musiałem poprzerabiać te starsze tabelki pod nowszą, czyli aby kolumny się tak samo nazywały – np. jedna kolumna z tą samą zawartością w jednej tabelce nazywała się "tresc", a w starszej "tekst", a także porobić w starszych dodatkowe kolumny z pustą zawartością, np. "linkfilm" (link do reportażu video), dodatkowo zmienić kodowanie tekstu i typ kolumn na jednakowe. Pewnym problemem był klucz podstawowy "id", który się w tabelkach powtarzał. Na początku pomyślałem, żeby w tej najnowszej tabelce pozmieniać numery id o 11 tys. do góry, ale to głupi pomysł, bo wtedy w Googlach by się pomieszało, ktoś wchodził by na link z wyszukiwarki i otwierał by się zupełnie inny artykuł niż potrzeba, dlatego też postanowiłem tego nie ruszać. Zastosowałem inne sprytne obejście z wykorzystaniem ułamków, np. artykuł archiwalny o id 5432 w tej najnowszej połączonej tabelce ma teraz id 0.5432, zaś np. o id 432 w nowszej to 0.0432. Druga archiwalna tabelka to samo tylko na początku 1. np. 1.212. Dzięki temu będę mógł łatwo zrobić przekierowanie w .htaccess, wcześniej zastanawiałem się nad liczbami ujemnymi, ale te ułamki to zdecydowanie lepszy pomysł. Oczywiście pozostał ten problem, że robiąc sortowanie według "id" miałbym nie poklei według daty, bo artykuły z numerami 0. są od 2003 do 2012, a z 1. od 2005 do 2012, miałbym na stronie najpierw od 2003 do 2012, a później znowu od 2005 do 2012 zamiast po kolei. Natomiast na stronie nie mogę dać sortowania kolejności artykułów według dat, ponieważ w najnowszej wersji są one sortowane według dodatkowej kolumny z numerkami "kolej", dzięki czemu administrator dodający do bazy artykuły ma możliwość przestawienia kolejności ich wyświetlania na stronie, może się tak zdarzyć, że wcześniej wrzucony artykuł jest ciekawszy i dłuższy, i warto go ustawić bardziej na początku. |
|
|
7.12.2019, 20:03:36
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Jeśli dobrze rozumiem, to chciałeś zachować ID i klucz sortowania tej najnowszej tabeli, tak?
ID starszych danych mogłeś zacząć od MAX(ID)+1 z najnowszej tabeli. Klucz sortowania najnowszej tabeli zwiększyć o wartość wynikającą z ilości rekordów w starych tabelach (Y), a potem rekordy w starych tabelach ponumerować od 1 do Y. -------------------- |
|
|
8.12.2019, 14:00:16
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.09.2019 Ostrzeżenie: (0%) |
No, Twój sposób też byłby dobry.
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 18:26 |