Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Konwersja wynikow liczbowych i skopiowanie ich do drugiej kolumny
lexis72
post 23.04.2013, 12:56:19
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 25.02.2013

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


Witam,
Mam w bazie kolumne z wynikami w postaci liczbowej zapisane w formie A,BB,CCC gdzie przykladowe wyniki wygladaja np 1,33,656 lub 1,20,356. Zrobilem teraz druga kolumne i chcialbym skopiowac do niej wszystkie te wyniki ale w takiej formie XX.ZZZ gdzie zaprezentowane powyzej wyniki wygladalyby tak: 93.656 lub 80.356. Mozna wiec powiedziec ze wyniki zapisane w formie minut, sekund i tysiecznych sekundy przedzielone przecinkami chcialbym przeksztalcic i przekopiowac do drugiej kolumny w postaci sekund i tysiecznych sekundych przedzielonych kropka. Czy macie jakies pomysly jak to zrobic?
Z gory dzieki za zainteresowanie. Pozdrawiam.
Go to the top of the page
+Quote Post
matiit
post 23.04.2013, 16:36:56
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


  1. INSERT INTO nowa_tabela (kolumna) VALUES(
  2. REPLACE(',', '.', (SELECT kolumna FROM stara_tabela WHERE 1))
  3. );
  4.  

Coś takiego powinno działać (nie sprawdzałem).


@nospor - jejku racja smile.gif

select REPLACE(...) powinno być

A wracając do problemu - wg mnie szybciej będzie to napisać po prostu w PHP/innym języku niż sql niż wymyślać skomplikowane zapytanie.


Ten post edytował matiit 23.04.2013, 16:43:31
Go to the top of the page
+Quote Post
nospor
post 23.04.2013, 16:49:28
Post #3





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




@matiit przeczytaj jeszcze raz uważnie problem a dowiesz się, że zamiana przecinków na kropki nie jest rozwiązaniem smile.gif

A nawet jeśli by o to chodziło, to REPLACE ma być na poziomie SELECT a nie na odwrót

Cytat
A wracając do problemu - wg mnie szybciej będzie to napisać po prostu w PHP/innym języku niż sql niż wymyślać skomplikowane zapytanie.
Pobranie danych, obrobienie ich w php, i ponowne walenie zapytań nie będzie szybsze od jednego zapytania mysql.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
matiit
post 23.04.2013, 17:27:24
Post #4





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Będzie to szybciej napisać. Ale będzie działać dłużej.
Ja niestety z tym nie pomogę (SQL) za słabo znam.
Go to the top of the page
+Quote Post
pmir13
post 23.04.2013, 20:39:39
Post #5





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


Proponuję takiego potworka:

  1. INSERT INTO nowa_tabela(kolumna)
  2. SELECT concat_ws('.',
  3. substring_index(substring_index(kolumna,',',-2),',',1)+60*REPLACE(kolumna,substring_index(kolumna,',',-2),''),
  4. substring_index( kolumna, ',', -1 )
  5. )
  6. FROM stara_tabela

Go to the top of the page
+Quote Post
mmmmmmm
post 23.04.2013, 22:36:10
Post #6





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

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


ta funkcja:
  1. SELECT str_to_date('1,33,656','%i,%s,%f')
zwróci ci 00:01:33.656000
Dalej możesz kombinować np z time_to_sec()
Go to the top of the page
+Quote Post
lexis72
post 24.04.2013, 11:21:54
Post #7





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 25.02.2013

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


PMIR13 jestes wielki wszystko dziala i konwertuje wyniki tak jak chcialem smile.gif
Mam jeszcze tylko jeden problem zwiazany z tym ze 2 kolumna ktora utworzylem znajduje sie w tej samej tabeli i zalezy mi aby kazdy poczatkowy wynik byl w ten sposob kopiowany do 2 kolumny w tym samym wierszu a te zapytanie insertuje te wyniki na sam dol zostawiajac puste wszystkie pozostale kolumny. Mniemam ze musze zmienic te zapytanie w takim razie na update ale kombinuje z tym i ciagle wywala bledy ;/

Graficznie tabela ma taka strukture: (nastepujace kolumny)

AAA | BBB | CCC | wynik | wynik2 | DDD | EEE
1 wiersz
2 wiersz
3 wiersz
....

Czyli utworzylem kolumne wynik2 do ktorej chce przeniesc wynik w takiej postaci jak podalem wyzej. A te zapytanie tworzy mi na dole nowe wiersze z wynik2 w takiej formie jaka chce ale jak zrobic zeby ten wynik2 towrzony byl w tym samym wierszu co pobierany wynik.

Dzieki i pozdrawiam smile.gif
Go to the top of the page
+Quote Post
pmir13
post 24.04.2013, 14:04:25
Post #8





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


  1. UPDATE tabela
  2. SET wynik2 = concat_ws( [TO samo co wczesniej] )

Oczywiście zamieniając wszystkie wystąpienia 'kolumna' na 'wynik'.
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.06.2025 - 00:38