![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 6.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
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. Ten post edytował jareqpl 27.07.2012, 12:55:18 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
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... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 6.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
chyba że ktoś ma lepszy pomysł jak to zrealizować to będę wdzięczny. Bo to wciąż można zmodyfikować.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 07:03 |