![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Nieautoryzowani Postów: 34 Pomógł: 1 Dołączył: 22.06.2009 Skąd: Koszalin/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam następujący problem:
Są 2 tabele: produkty, parametry w tabeli 'produkty' są pola: id_produktu, nazwa w tabeli 'parametry' są pola: id_produktu, parametr, wartosc Omawiając. Każdy produkt ma kilka parametrów. Każdy parametr ma jakąś wartość. Mam 3 produkty: pr1, pr2, pr3. Mam też ogólnie 3 parametry: wys, szer, waga. Łącznie w tabeli 'parametry' mam 9 rekordów, po 3 pary >parametr i wartość parametru< dla każdego z produktów. Chciałbym napisać takie zapytanie które wybierze mi produkty spełniające WSZYSTKIE określone warunki w jednym zapytaniu czyli np: 'wys' BETWEEN 30 AND 100, oraz 'szer' BETWEEN 60 AND 100 oraz 'waga' BETWEEN 10 AND 100 Próbowałem już kombinować na różne sposoby, ale nie chce mi wyjść. Otrzymuję albo wyniki produktów spełniających dowolne kryterium, lub jeśli w HAVING użyję "AND" - brak wyników, co jest oczywiste gdyż nie ma dwóch rekordów spełniających warunki na AND.
Ma ktoś na to jakiś mądry sposób? Z góry dziękuję za podpowiedzi. Ten post edytował lorak110786 5.10.2010, 14:40:09 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 5 Dołączył: 31.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
w serwisie erobay.pl zastosowałem taki oto format:
Kategorie produktów, a do każdej (zaczynając od rodzica - potomkowie dziedziczą parametry) dodałem parametry. Każdy z nich zadeklarowałem w/g takich wartości jak: checkbox, select i range. Każde z nich ma na celu dać użytkownikowi pożądany sposób przefiltrowania informacji oraz przy wysłaniu formularza przygotowanie odpowiedniego zapytania do bazy danych. I tak w przypadku jeśli parametrem jest checkbox wtedy każdy kolejny parametr z tej grupy rozdzielany jest jako OR (tak by dopasować maksymalnie dużo pasujących wyników). Gdy wybierze ktoś select to wtedy tylko i wyłącznie wybrana wartość jest brana pod uwagę... Range - czyli zakres, wtedy system wypisze pole w stylu Cena od: [____] do: [____] - i analogicznie dobierze zapytanie które określi zakres (IMG:style_emoticons/default/smile.gif) Tyle w teorii.. W praktyce wygląda to tak:
Opis pól: PRM_Id - id rekordu w tej tabeli CAT_Id - id kategorii od której zaczyna się ten parametr (wszystkie kategorie dzieci będą dziedziczyć ten parametr) PRM_Name - nazwa pola widzialna dla użytkownika: np. Kolor PRM_FormName - nazwa pola w formularzu PRM_Type - czyli to ten wybór z wspomnianych informacji powyżej... PRM_MultiSelect - to nie jest potrzebne do tego zagadnienia (czyli można wywalić) PRM_Value - tak samo (można pominąć) PRM_Sort - kierunek sortowania (wartość liczbowa) PRM_Active - wartość 1 jesli parametr aktywny i widoczny, 0 jeśli nieaktywny i niewidoczny 2 tabelą są wartości tych parametrów:
PRV_Id - id rekordu w tej tabeli PRM_Id - id parametru (z poprzedniej tabeli) PRV_Value - wartość widoczna dla użytkownika, np. Parametr Kolor, wartości: różowy, zielony, niebieski... PRV_Sort - ustawienie kolejności sortowania (wartość liczbowa) i ostatnia tabela z parametrami przypisanymi do samych produktów:
Opis pól: PRP_Id - id rekordu PRD_Id - id produktu PRV_Id - id wartości (po tym dojdziecie jaki to parametr) PRP_Value - wartość dla pola range (zakres) To by było tyle jeśli chodzi o mój układ. Napisanie samego zapytania chyba nie powinno stanowić problemu, w razie czego go tu wkleje... Pozdo 600 i niech moc będzie z wami (IMG:style_emoticons/default/blinksmiley.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 19:16 |