![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 29.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
witam, mam spadkową bazę danych, nie wnikam w poprawność struktury. co najwazniejsze muszę na niej pracować bez większych zmian. mam pewien problem. schemat tablicy parametrów:
id | owner_id | param | value gdzie id to primary key, owner_id to id uzytkownika dla którego tabela gromadzi parametry, natomiast param to nazwa parameru a value jego wartość. i teraz dochodzę do momentu filtrowania. Chciałbym pobrać użytkoników (wystarczą same ID), dla których parametry param1 = val1 a param2 = val2 nie mam za bardzo pomysłu. Jedyny, który mam wydaje mi się chyba słaby, mianowicie:
co o tym sądzicie, na pewno są lepsze sposoby? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kurde... co Ty chcesz od tego sposobu (IMG:style_emoticons/default/smile.gif) Jeśli to ma być na zasadzie param1 = value1 OR param2 = value2 to jest ok
Jeśli to musi być na zasadzie "AND" to jest więcej zabawy ale też da się zrobić - pokombinowałbym z GROUP_CONCAT może... Albo można dać joina na tej samej tabeli. W podstawowej sprawdzamy parę pierwszą, w joinowanej tabli drugą i liczymy ile jest takich wierszy (IMG:style_emoticons/default/smile.gif) Tak czy siak twoja metoda działa dla obu przypadków dobrze z tego co widzę (IMG:style_emoticons/default/smile.gif) Innym sposobem zwracającym więcej danych może być ten join: (nie testowałem tego - ale może działać) (IMG:style_emoticons/default/smile.gif)
Ten post edytował Sephirus 22.02.2012, 16:45:35 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 29.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
generalnie tych warunków może być więcej lub mniej. Dałem group by aby działało to jak AND i zwracało tylko tych użytkowników którzy spełniają dwa warunki. Na pierwszy rzut oka działa ok i wywala dobrych użytkowników, ale dlatego to wstawiłem, aby ktoś mi potwierdził czy dobrze kombinuje bądź naprowadził na ew. problemy (IMG:style_emoticons/default/smile.gif)
noo, jest jednak słaba strona. Problem pojawia się kiedy chcę pobrać użytkowników którzy mają param1 = val1, natomiast param2 < 3 (z tymże mniejszy od 3 znaczy że może wcale nie być wpisu dla tego parametru, nie ma wpisu param2 = 0). no i tutaj moje zapytanie na pewno zawodzi. Czy ktoś wie jak taki problem rozwiązać? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 01:55 |