Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> tablica parametrów
ciekawski
post
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:
  1. SELECT owner_id, count(*) AS cnt
  2. FROM params
  3. WHERE (param = 'param1' AND value = 'val1') OR (param = 'param2' AND value = 'val2')
  4. GROUP BY owner_id
  5. HAVING cnt = 2


co o tym sądzicie, na pewno są lepsze sposoby?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ciekawski
post
Post #2





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ć?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 03:07