Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql]Sortowanie wyników wg. pól zapisanych jako serialize
Forum PHP.pl > Forum > PHP
piotr94
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.
tehaha
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
elektrrrus
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.
piotr94
Dzięki za pomoc, w takim razie trzeba przekonwertować bazę na wiele zależnych tabel, tak jak być powinno;-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.