![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
mam tabelke:
produkt | cecha | parametr przykladowo: 37 1 78 37 17 42 37 17 74 37 15 39 (dla jakiegostam produktu iles cech zapisanych ) i chcialbym z niej pobrac id produktow ktore maja np. cecha=5 i parametr dla tej cechy parametr=6 jako ze maja kilka cech przypisanych typu producent, zasilanie itp. to jeszcze rownoczesnie chce pobrac produkty danego producenta o okreslonej cesze wiec chcialbym zeby mi wybralo id produktow dla cechy producent ( np.1 ) o parametrze firma czyli
ale rownoczesnie chce zeby to byly elementy montowane sciennie czyli czyli
nie moge napisac wiec :
bo to jest sprzeczne zapytanie, zna ktos rozawiazanie tego problemu ( mam wrazenie ze to cos prostego co mi umknelo ) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie wlasnie ze to nie jest takie proste bo to zapytanie mi znajdzie produkty jednego producenta i produkty ktore sie montuje na scianie. Klopot w tym ze te ktore sie montuja na scianie moga byc roiznych producentow ;-)
wiec dostaniemy zestaw wynikow zupelnie inny niz bysmy sie spodziewali ja potrzebuje wlasnie przykladowo scienne i jednej firmy. Ten post edytował ergo 9.03.2006, 15:54:43 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Moim zdaniem jest to troche źle zaprojektowana baza......
Po co "producent" jest cechą skoro każdy produkt ma (bo musi) mieć producenta? W taki sposób jak to masz to tylko utrudniasz sobie życie. Według mnie, producent jest taka cechą jak nazwa - powinieneś mieć oddzielną kolumnę dla producenta, choćby z tego powodu, żeby wyeliminować problemy takie jak ten. A jeżeli np. dany produkt ma 2 lub wiecej producentów to nic nie stoi na przeszkodzie, żeby wrzucić do takiej kolumny 2 lub wiecej wartości rozdzielonych przecinakimi a potem szukać przy użyciu find_in_set. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 853 Pomógł: 25 Dołączył: 27.08.2003 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Cytat(spenalzo @ 2006-03-09 17:54:20) Według mnie, producent jest taka cechą jak nazwa - powinieneś mieć oddzielną kolumnę dla producenta, choćby z tego powodu, żeby wyeliminować problemy takie jak ten. A jeżeli np. dany produkt ma 2 lub wiecej producentów to nic nie stoi na przeszkodzie, żeby wrzucić do takiej kolumny 2 lub wiecej wartości rozdzielonych przecinakimi a potem szukać przy użyciu find_in_set. wiecej, ja bym sie skłaniał do kolejnych 3 kroków normalizacji. find_in_set najwydajniejszych rozwiazaniem raczej nie jest... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nie jest, ale z doświadczenia wiem, że produktów ktore mają wiecej niż 1 producenta w skali całego sklepu/katalogu produktów jest naprawde niedużo, i czasami nie ma sensu rozbijać tego na dodatkową tabelę...
Poza tym to był tylko przykład ; P |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 402 Pomógł: 0 Dołączył: 20.01.2003 Ostrzeżenie: (0%) ![]() ![]() |
jesli sie trafia to sie producenta laczy z produktem na zasadzie wieleDOwielu. i po klopocie.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie ma co rozwazac na temat czy produktow ktore maja kilku producentow jest duzo czy malo, bo np. mam czujniki ktore moga byc scienne, sufitowe czy tez na uchwycie, o ilus rodzajach trybow pracy itp. wiec takich cech o wielu parametrach na raz moze byc wiele. pozatym produkt nie musi miec producenta, produkt nie musi miec okreslonej cechy w danej grupie ( przynajmniej tak to jest zaprojektowane ). z tego co czytalem to wlasnie jest optymalnie zaprojektowana baza ( albo cos zle zrozumialem z normalizacja). tylko nie wiem po prostu jak to wybrac za pomoca jakichs tymczasowych tabel moze ? albo za pomoca operacji na zwroconych elementach macierzy typu najpierw to pobieramy dla producenta a potem wyrzucamy elementy ze zbioru ktore nie posiadaja odpowiednich parametrow ? ( tylko boje sie ze przy duzej ilosci parametrow tudziez sporej ilosci zwroconych elementow to moze byc stosunkowo wolne )
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Właśnie widać jak bardzo optymalnie zaprojektowana jest ta baza... (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)
Jak chcesz sie dowiedziec jak powinna wygladać taka baza dotycząca produktów z wieloma różnymi cechami użyj szukaczki, było to walkowane kilka razy. Np. to: http://forum.php.pl/index.php?showtopic=40992 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
generalnie chyba nie rozumiesz co ja chce osiagnac, bo tamte posty nijak sie maja do mojego ( zreszta baze mam zaprojektowana praktycznie tak samo ), rozwiaznie z wieloma parametrami w jednym polu oddzielanymi przecinkiem itp, jest zupelnie przeciwne idei baz ;-) ( chociaz wiem ze dziala ), projekt jest dobry , nie wiem tylko jak sformulowac zapytanie ktore by mi to realizowalo. chyba nie przyjrzales sie strukturze
mojej bazy dokladnie ;-) u mnie tabela wiele do wielu jest tabela produkty_cechy. jak na takim rozawiazaniu (ktore proponowales wyzej) planujesz napisac wydajne zapytanie ktore wybierze Z DANEJ KATEGORII produkty ktore maja 3 producentow, 3 sposoby montowania , i 2 rodzaje elementow swiatloczulych ? ( wszystko rownoczesnie ) jak wymysle jak to ma byc to podam rozwiazanie ;-) Ten post edytował ergo 10.03.2006, 14:08:21 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat(ergo @ 2006-03-10 09:17:15) jak na takim rozawiazaniu (ktore proponowales wyzej) planujesz napisac wydajne zapytanie ktore wybierze Z DANEJ KATEGORII produkty ktore maja 3 producentow, 3 sposoby montowania , i 2 rodzaje elementow swiatloczulych ? ( wszystko rownoczesnie ) Jeżeli mowa o tym moim rozwiązaniu to poprzez warunki w WHERE połączone AND. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
generalnie ja musze miec rozwiazanie ktore obsluguje nieskonczona ilosc mozliwych cech i parametrow dla produktu, w zasadzie mozna by to zrobic za pomoca tabeli tymczasowej ale nie wiem jak potem wyfiltrowac niepotrzebne elementy.
bo moge pobrac bezproblemowo produkty danego producenta, produkty o okreslonych cechach w jednym zapytaniu, ale nie wiem jak zrobic np zapytanie pobierajace produkty spelniajace wszystkie warunki na raz... no i jest rozwiazanie ( moze nie najpiekniejsze ale zawsze): jezeli mamy kilka warunkow wyszukiwania to wyszukuje najpierw wszystkie id elementow ktore zawieraja sie w zbioreze ( kategoria=x AND cecha=y AND parametr=z ), to nam juz zwraca zawezona licznbe produktow ( w przypadku sklepu nad ktorym pracuje zwykle nie wiecej niz 10 elementow ale powinno dzialac nawet na duzych ilosciach przedmiotow ), potem z tabeli cech dla kazdego kolejnego warunku wyszukuje kolejna ceche i parametr ale juz w zawezonym zakresie elementow czyli id IN (id z poprzedniej iteracji) AND cecha=x AND parametr=y , i znowu zawezam liste id produktow i tak dla wszystkich zadanych warunkow, ma to moze te wade ze dla kazdego warunku dodaje 1 zapytanie ale za to sa to szybkie operacje tylko na liczbach. a zalete ma te ze dla kazdego produktu mozna zdefiniowac i przypisac nieskonczona ilosc cech Ten post edytował ergo 13.03.2006, 10:13:41 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 00:30 |