Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL]auto_increment 01
Randallmaster
post
Post #1





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Witam,
jak ustawić auto_increment aby naliczało 01,02,03,04 a nie 1,2,3,4?
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




Ustaw sobie typ ZEROFILL.
Nie mniej jednak patrzac na ten i poprzednie posty, to chyba coś napsules w tej swojej apce... Moze warto by to przemyslec?
Go to the top of the page
+Quote Post
Randallmaster
post
Post #3





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


pobieram dane po ip przykładowo

8 - test
8.12 - test 12
8.14 - test 13

80 - test 80

muszę pobierać dane po ip np. ip like '8%'
to zabiera mi też test 80

mój warunek:
case when parentID = 0 and length(ip) < 2 then concat('0', ip) else ip end like '08%'"
08 jest zmieniane przed dodaniem odpowiednio dla danej.
I w tym przypadku pod ip 8.12 i 8.14 wyświetla poprawnie, ale w ip = 8 gdzie powinno pokazać dane 8.12 i 8.14 jest puste bo pobiera 08

mam nadzieje że dobrze wytłumaczyłem

nie idzie tego pogodzić ;/

Ten post edytował Randallmaster 29.01.2014, 11:32:31
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Bo to sie robi tak:
ip like '8.%'

I dobrze by bylo bys cale IP zapisywal z kropką na koncu czyli nie:
8.12
a
8.12.
Wowczas nie ma zadego problemu z pobieraniem danych
Go to the top of the page
+Quote Post
Randallmaster
post
Post #5





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


no tak ale jak zrobię z kropką to już nie pokaże wartości dla 8.12 bo porównanie będzie z kropką 8.12.

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





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




Nie rozumiem.... robiac
ip like '8.%'
to 8.12. lapie sie w to. W czym problem?
Go to the top of the page
+Quote Post
Randallmaster
post
Post #7





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


to jest w pętli wartości(ip porównywane) same wskakują (IMG:style_emoticons/default/smile.gif)

później jest np ip like '8.12.%'

ale dopisałem or ip like '8.12' (z innymi warunkami przed or) i pobiera brakującą wartość (IMG:style_emoticons/default/smile.gif)

sprawdzam czy mam ok.

rozumiem że przy or aby mi nie wywaliło innych rekordów to muszę zrobić tak (chodzi mi czy muszę dublować act i type bo jak nie zdublowałem to doskoczyły rekordy):

act = 'Y' and type = '1' and ip like '8.12.%' or act = 'Y' and type = '1' and ip like '8.12'

dobrze?

Ten post edytował Randallmaster 29.01.2014, 11:51:16
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




Cytat
ale dopisałem or ip like '8.12' (z innymi warunkami przed or) i pobiera brakującą wartość
Ale po co??
Pisalem ci, ze w bazie masz zapisywac tez kropke na koncu. Czyli w bazie ma byc tak:
8.12.
a nie:
8.12

Wowczas jeden like lapie ci wszystko. Dodajac kolejne niepotrzebne OR tylko zamulasz zapytanie.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #9





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


nie rozumiesz co chce osiągnąć (IMG:style_emoticons/default/smile.gif)

8 - 10 zł
8.12 - 5 zł
8.12.13 - 2 zł
8.14 - 5 zł

pętla nadaje ip.
nadrzędne ip ma liczyć sumę tego co jest pod nim plus jego samego.

piersze pytanie:
select * from tabela here act = 'Y' and type = '1' and ip like '8.%' or act = 'Y' and type = '1' and ip like '8';
pokaże:
8 - 22 zł

drugie pytanie:
select * from tabela here act = 'Y' and type = '1' and ip like '8.12.%' or act = 'Y' and type = '1' and ip like '8.12';
pokaże 8.12 = 7 zł

gdybym zrobił tyko z kropką:
select * from tabela here act = 'Y' and type = '1' and ip like '8.12.%' or act = 'Y';
pokaże mi tylko 2 zł a potrzebuje 7 zł.

ciężko jest wytłumaczyć pisząc (IMG:style_emoticons/default/smile.gif) mam nadzieje że zrozumiale.

to jest podzapytanie do pętli ponieważ w jednym zapytaniu nie da się tego zrobić.

dodam że or nie zamuliło zapytania pętla generuje się szybko (IMG:style_emoticons/default/smile.gif)

Ten post edytował Randallmaster 29.01.2014, 12:02:18
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




ja rozumiem co chcesz zrobic. I tylumacze ci, by zrobic to optymalnie, w bazie swoje IP masz zapisywac z kropką na koncu ip. Wowczas starczy tylko jeden like jak ci podalem i twoje sumy wyjdą tak jak trzeba. Ale ty mnie nie sluchasz z niewiadomych dla mnie przyczyn :/

Dla:
8. - 10 zł
8.12. - 5 zł
8.12.13. - 2 zł
8.14. - 5 zł

zapytanie
select * from tabela here act = 'Y' and type = '1' and ip like '8.12.%'
zwroci ci 7 a nie 2. Przyjmij to wkoncu do wiadomosci :/

Cytat
dodam że or nie zamuliło zapytania pętla generuje się szybko
Bo masz dwwa rekordy na skrzyz..... przy wiekszej liczbie poczulbys roznice
Go to the top of the page
+Quote Post
Randallmaster
post
Post #11





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


ale ja nie mam kropek na końcu każdego ip (IMG:style_emoticons/default/smile.gif) a już tabela przygotowana więc nie mam czasu na zmiany... (IMG:style_emoticons/default/sad.gif)

rekordów jest około 2 tys

Ten post edytował Randallmaster 29.01.2014, 12:06:41
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
ale ja nie mam kropek na końcu każdego ip
Dlatego ci wlasnie pisalem, bys zrobil.....
Nie masz czasu? A na rozwalanie struktury ZEROFILLem to miales czas?
Poza tym dodanie kropek do aktualnych wpisow w bazie to zwykly jeden UPDATE
Go to the top of the page
+Quote Post
Randallmaster
post
Post #13





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


racja dodanie kropek to jeden update (IMG:style_emoticons/default/smile.gif) zastosuje się do tego. Dziękuję za pomoc
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 - 19:26