![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 1 Dołączył: 23.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Może najpierw pokaże jaka jest struktura bazy :
chodzi o odpowiednie wyszukanie rekordu Jeśli chcę znaleźć rekord o nazwie 'garlic' koloru beżowego daje takie zapytanie :
zapytanie zwróci offer_ID = 4.. Jeśli chcę znaleźć rekord o nazwie 'garlic' kształtu owalnego daje takie zapytanie :
zapytanie zwróci offer_ID = 4.. I teraz pytanie: jak ułozyć zapytanie aby wynikiem był offer_ID = 4 wybierając kształ owalny i kolor beżowy ![]() |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 282 Pomógł: 89 Dołączył: 12.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chcesz po prostu znaleźć produkty koloru beżowego i jednocześnie owalne:
Jeśli dodatkowo mają mieć coś w nazwie weź to wszystko w nawias jako podzapytanie i dodaj join do tabeli z nazwami produktów i odpowiednim warunkiem. Ten model danych znany jest jako EAV (entity-attribute-value) i powszechnie odradzany, ze względu na słabą wydajność - po prostu nie jest odpowiedni dla założeń relacyjnych baz danych. W zasadzie do stosowania WYŁĄCZNIE w sytuacjach, gdzie użytkownik musi mieć możliwość dynamicznego dodawania różnych atrybutów (na przykład po roku zachce mu się dodać rozmiar dywanu). Jeśli można z góry określić wszystkie możliwe atrybuty to zdecydowanie lepiej umieścić je jako kolumny. Z pewnością nie miałbyś wtedy żadnych problemów z podobnym wyszukiwaniem. Ten post edytował pmir13 23.04.2013, 21:20:24 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 1 Dołączył: 23.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, że chcąc wyszukać dodatkowy parametr daję kolejnego OR'a i HAVING COUNT(*) = 3
![]() No niestety klient chce mieć możliwość dynamicznego dodawania parametru i dlatego taka struktura... Ewentualnie do wyszukiwania przygotuję osobną tabelą z potrzebnymi parametrami jako kolumnami.. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 18:34 |