Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak najwydajniej zrobić wyszukiwarke w takiej bazie.
Forum PHP.pl > Forum > Bazy danych
jareqpl
Witam, otóż mam tabelę users z relacją do UserInfos (nazwa taka ze względu na konwencje frameworka w którym piszę)
users wygląda standardowo ma pole id,password,email,login - żadnych cudów.
Problem zaczyna się w UserInfos
wygląda to tak: id,user_id,name,value;
ta tabela (UserInfos) przechowuje informacje o użytkownikach, np ich wiek, wzrost, numer buta.
więc przykład

user_id = 3,
name = age
value = 25

+ drugie ustawienie dla tego uzytkownika

user_id = 3,
name = shoe.size
value = 43

Jak najwydajniej zrobić tutaj wyszukiwarkę ludzi? Np ktoś będzie chciał znaleźć wszystkie osoby z wiekiem pomiędzy 20 a 25 i numerem buta 43.

oczywiście możnaby wyszukiwać w ten sposób .... WHERE `name` = 'shoe.size' AND `value` = '43'.
Tylko co jeżeli ktoś będzie chciał wyszukać po rozmiarze buta i wieku ?

Zapytacie pewnie dlaczego nie zrobiłem w tabeli users pól "shoe_size", "age" itd itp?
Bo tych ustawień w przyszłości pojawi się więcej, dużo więcej. Każdy z użytkowników będzie miał bardzo dużo preferencji i będzie można dodawać własne z poziomu strony www.

Pozdrawiam i liczę na jakąkolwiek pomoc.
erix
Cytat
Tylko co jeżeli ktoś będzie chciał wyszukać po rozmiarze buta i wieku ?

Pierwsze, co mi przychodzi do głowy, to INNER JOIN, grupowanie po ID + HAVING COUNT(ID) = liczba kryteriów. Może niekoniecznie wydajne, ale...
jareqpl
chyba że ktoś ma lepszy pomysł jak to zrealizować to będę wdzięczny. Bo to wciąż można zmodyfikować.
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.