ďťż
 
[MYSQL] SELECT dla zserializowanych danych... ďťż
 
[MYSQL] SELECT dla zserializowanych danych...
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MYSQL] SELECT dla zserializowanych danych...



adpawl - 04-04-2007 00:01
[MYSQL] SELECT dla zserializowanych danych...
  Witajcie!

Mam sobie tabele z polem "data" zawierającym zmienne i ich wartości - w
postaci zserializowanej tablicy array.

Wygląda to więc przykładowo tak:
sesja|N;zmienna1|s:8:"wartosc1";zmienna2|s:8:"wart osc2";zmienna3|s:8:"wartosc3

Mam teraz problem, jak skonstruaować zapytanie SELECT wybierające te rekordy
gdzie w polu "data" jakaś wybrana zmienna np. "zmienna2" = jakaś wartość np.
"wartosc2"
???

Zaznaczam, że budowa tegoż pola może się znacząco różnić(np. fragmentem
"s:8:") jak i kolejnością i liczbą zmiennych

Ma ktoś jakiś pomysł?





=?iso-8859-2?q?Filip_Rembia=B3kowski?= - 04-04-2007 00:02

  On 3 Kwi, 10:05, "adpawl" <adp...@onet.eu> wrote:

> Mam sobie tabele z polem "data" zawierającym zmienne i ich wartości -w
> postaci zserializowanej tablicy array.
>
> Wygląda to więc przykładowo tak:
> sesja|N;zmienna1|s:8:"wartosc1";zmienna2|s:8:"wart osc2";zmienna3|s:8:"wartosc3
>
> Mam teraz problem, jak skonstruaować zapytanie SELECT wybierające te rekordy
> gdzie w polu "data" jakaś wybrana zmienna np. "zmienna2" = jakaś wartość np.
> "wartosc2"
> ???
>
> Zaznaczam, że budowa tegoż pola może się znacząco różnić(np. fragmentem
> "s:8:") jak i kolejnością i liczbą zmiennych
>
> Ma ktoś jakiś pomysł?

1. znormalizować i nie robić tego na przyszłość
2. jak się dało zserializować, to da sie pewnie zdeserializować? ;)
inaczej mówiąc program który wstawia dane w tej formie powinien też
móc je odczytać
3. http://www.kanolife.com/escape/2006/...-splitter.html
4. podobno mysql 5.0 ma procedury składowane. mozna chyba napisać
sobie kilka funkcji użytkownika?
np. get_variable( rowid, varname ) i potem stosować prostsze zapytania
SELECT * FROM tabela WHERE get_variable( tabela.id, 'zmienna2' ) =
'wartość zmiennej 2';




adpawl - 04-04-2007 00:02

 
Użytkownik "Filip Rembiałkowski" <plk.zuber@gmail.com> napisał w wiadomości
:

>1. znormalizować i nie robić tego na przyszłość
>2. jak się dało zserializować, to da sie pewnie zdeserializować? ;)
>inaczej mówiąc program który wstawia dane w tej formie powinien też
>móc je odczytać
>3. http://www.kanolife.com/escape/2006/...-splitter.html
>4. podobno mysql 5.0 ma procedury składowane. mozna chyba napisać
>sobie kilka funkcji użytkownika?
>np. get_variable( rowid, varname ) i potem stosować prostsze zapytania
>SELECT * FROM tabela WHERE get_variable( tabela.id, 'zmienna2' ) =
>'wartość zmiennej 2';

1-w tym konkretnym przypadku kompletnie odpada
2 - pewnie że się da ale musiał bym chyba przetworzyć w skrypcie wszystkie
rekordy i wybrać wtedy te spełniające warunek, mi zaś chodzi o wybór na
poziomie mysql'a
3 - też nic mi nie daje
4 - to już prędzej, poczytam na ten temat

dokonałem drobnych zmian i teraz szukana wartość jest unikalna przez co da
się wybrać zwykłym LIKE

Nadal ciekawi mnie jednak, czy znalazł by się jakiś sposób na tego SELECTa
gdyby szukana wartość nie była unikalną...




Maciek Dobrzanski - 05-04-2007 00:04

  "adpawl" <adpawl@onet.eu> wrote in message news:eut1t2$hfn$1@news.onet.pl...

> Mam teraz problem, jak skonstruaować zapytanie SELECT wybierające te
> rekordy gdzie w polu "data" jakaś wybrana zmienna np. "zmienna2" = jakaś
> wartość np. "wartosc2"
> ???

Jak to jednorazowa operacja to może nawet teoretycznie REGEXPem, choć przy
pewnych wartościach kolumny z danymi sesji może nie dać to prawidłowych
wyników. Jak to trwałe rozwiązanie to albo wymusić odpowiednie zmiany, albo
sobie strzelić... kielona i mieć dobre samopoczucie i ostatecznie ratować
się UDFem napisanym w jakimś C.

Maciek
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • misida.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com