Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php/mysql]Sortowanie wyników wg. pól zapisanych jako serialize
piotr94
post 21.06.2011, 13:58:20
Post #1





Grupa: Zarejestrowani
Postów: 331
Pomógł: 30
Dołączył: 11.11.2008
Skąd: Kraków

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


Witam!
Mam wielojęzyczny system, w którym w polu nazwa w bazie danych przechowywane są nazwy we wszystkich językach jako zserializowane tablice asocyjacyjne.
(czyli pole zawiera np. wynik działania funkcji serialize(array('pl'=>'Nazwa polska',en=>'English name')), czyli a:2:{s:2:"pl";s:12:"Nazwa polska";s:2:"en";s:12:"English name";})
I teraz mam takie pytanie, czy istnieje jakaś szybka metoda na sortowanie wyników zapytania według pola nazwa w określonym języku?
Chodzi mi tu o sortowanie danych bez żadnych zmian struktury bazy danych, bo wiem, ze najlepszym rozwiązaniem byłoby utworzenie dodatkowych tablic z nazwami i odwoływanie się do odpowiednich tablic poprzez numery id rekordów w tablicy głównej, ale takie działanie wymaga zmiany struktury dosyć sporej bazy danych.
Z góry dziękuję za pomoc.


--------------------
http://www.piotr94.net21.pl/ - wykonanie stron i serwisów internetowych
Jeśli moje wypowiedzi były dla Ciebie pomocne, kliknij "Pomógł" i odwdzięcz się ;)
Go to the top of the page
+Quote Post
tehaha
post 21.06.2011, 15:22:48
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Możliwe? - Raczej tak
Możliwe w prosty sposób? - Na pewno nie

Tutaj masz temat jak koleś posortował wyniki po wartości znajdującej się w zmiennej w formacie json, więc analogicznie mógłbyś to zrobić u siebie, sposób bardzo ciekawy, aczkolwiek radziłbym Ci przerobić strukturę danych, bo jak w jednej zmiennej trzymasz wiele zmiennych to znaczy, że jest źle zaprojektowana baza -> http://www.phpbuilder.com/board/showthread.php?t=10363945
Go to the top of the page
+Quote Post
elektrrrus
post 21.06.2011, 15:32:25
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 18
Dołączył: 11.06.2007
Skąd: Koszalin/Poznań

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


Takie sortowanie jest możliwe tylko jeśli napiszesz sobie procedure w bazie która będzie w loce te dane wyciągać z serializowanego ciągu i na podstawie tego sortować. Niewydajne to to mocno.
Baza jest źle zaprojektowana jeśli trzeba się uciekać do czegoś takiego, jedyne wyjście to zmiana jej struktury.
Go to the top of the page
+Quote Post
piotr94
post 21.06.2011, 21:30:22
Post #4





Grupa: Zarejestrowani
Postów: 331
Pomógł: 30
Dołączył: 11.11.2008
Skąd: Kraków

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


Dzięki za pomoc, w takim razie trzeba przekonwertować bazę na wiele zależnych tabel, tak jak być powinno;-)

Ten post edytował piotr94 21.06.2011, 21:31:02


--------------------
http://www.piotr94.net21.pl/ - wykonanie stron i serwisów internetowych
Jeśli moje wypowiedzi były dla Ciebie pomocne, kliknij "Pomógł" i odwdzięcz się ;)
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: 18.07.2025 - 22:42