![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Na początek podam ze strukturę bazy znajdziecie pod adresem: http://fallnet.sytes.net/siec-bud/export.jpg. Jesli chcecie poznac przykladowe dane to zapraszam pod adres: http://fallnet.sytes.net/siec-bud/index.php gdzie jest proste menu do wyswietlania danych z tabel co poznacie nizej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Mam problem z sformułowaniem zapytania w sql`u. Sprawa wygląda mniej więcej tak: Mam tabelę z nazwami cech (_cn), tablę z wartościami cech (_cw), tabelę z cechami przypisanymi do produktu (_cp) i tablę produkt (_prod). Strukturę i relacje znajdziecie w linku który podałem powyżej. Dla pewności zamieszczam sql`owe odpowiedniki:
I wszystko było by w porządku, gdyby nie to, że każdy produkt ma WIELE cech. tzn: Kod "SELECT _kat.kn, _cw.cw, _jm.jm_skrot, FROM _kat, _cw, _jm, _cp WHERE _prod.id_prod=_cp.id_prod"; (to zapytanie moze byc nie poprawne) wyswietli mi wszystko za wyjatkiem tego ze podana bedzie jedna cecha (a dokladnie jej wartosc).....czyli np: |kategoria|nazwa|jednostka miary| a (w zaleznosci od ilosci cech) chce otrzymac: |kategoria|nazwa|model|typ|wysokosc|itp......|jednostka miary| to chyba jest cos w stylu tabeli przestawnej? Kompletnie nie wiem jak to rozwiazac... nawet nie jestem pewien czy po prostu w samym php trzeba inaczej pobrac dane? Z góry dziękuje za (p)odpowiedzi pozdrawiam Marcin edit: a jeszcze jedno.. troche poteoretyzuje.. czy przy takiej strukturze tabeli, bede mial mozliwosc rozroznienia produktu i jego cech .. tzn czy nie powinienem dodac jeszcze jedenej tabeli(encji) z _cp.id_cp i _prod.id_prod? Macie jakies sugestie? Ten post edytował Fallout 10.02.2005, 19:47:03 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 17.12.2003 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Cytat(popbart @ 2005-02-11 18:58:17) 1) Co się da!? Przecież chciałeś mieć to w osobnych kolumnach(jednym zapytaniem) a on robi dwa zapytania 2) Jak byś używał postgresa to by nie było problemu: robisz podzapytanie from( i tu dajesz zwykłego select'a łączącego z sortowaniem). A tak chcesz robić zaawansowane żeczy na prymitywnej bazie. Można zrobić coś takiego: group_concat(cechy.nazwa order by cechy.nazwa separator '|') ale to tylko sortuje wewnetrzne cechy produktu Wyszukiwanie ? A co za problem dać odpowiedni where ? W dodawaniu lub edytowaniu pewnie nie obędzie się bez dwóch zapytań, ale wtedy operujesz tylko na jednym produktcie i to zupełnie inny select. 1) A wiec tak w manualu czytamy..."This function returns a string result with the concatenated non-NULL values from a group" czyli mi tworzy kolumne np. cechy i jako wartosc sumuje je w lancuch z rozdzielnikiem np % czy | ... a właśnie tu jest pies pogrzebany aby te CECHY były KOLUMNAMI . Wiec jak widzisz nie o to mi chodzilo.... 2) Nie bede dostosowywal serwera baz do bazy bo to mija sie z sensem.. to baza ma sie dostosowac.. nie bede przeciez instalowal nowego serwera SQL pod jedna baze... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 18:25 |