Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skompikowane zapytanie
Fallout
post
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 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:

  1. CREATE TABLE _prod (
  2. id_prod Int NOT NULL AUTO_INCREMENT,
  3. id_kat Float(0,0) NOT NULL,
  4. id_jm Int NOT NULL,
  5. PRIMARY KEY (id_prod)) TYPE = MyISAM
  6. ROW_FORMAT = DEFAULT;
  7.  
  8. CREATE TABLE _kat (
  9. id_kat Float(0,0) NOT NULL AUTO_INCREMENT,
  10. nk Varchar(20),
  11. kn Int NOT NULL,
  12. PRIMARY KEY (id_kat)) TYPE = MyISAM
  13. ROW_FORMAT = DEFAULT;
  14.  
  15. CREATE TABLE _jm (
  16. id_jm Int NOT NULL AUTO_INCREMENT,
  17. jm_skrot Varchar(20),
  18. jm_pelna_nazwa Varchar(20),
  19. PRIMARY KEY (id_jm)) TYPE = MyISAM
  20. ROW_FORMAT = DEFAULT;
  21.  
  22. CREATE TABLE _cn (
  23. id_cn Int NOT NULL AUTO_INCREMENT,
  24. cn Varchar(20),
  25. PRIMARY KEY (id_cn)) TYPE = MyISAM
  26. ROW_FORMAT = DEFAULT;
  27.  
  28. CREATE TABLE _cp (
  29. id_cp Int NOT NULL AUTO_INCREMENT,
  30. id_cw Int NOT NULL,
  31. id_prod Int NOT NULL,
  32. PRIMARY KEY (id_cp)) TYPE = MyISAM
  33. ROW_FORMAT = DEFAULT;
  34.  
  35. CREATE TABLE _cw (
  36. id_cw Int NOT NULL AUTO_INCREMENT,
  37. cw Varchar(20),
  38. id_cn Int NOT NULL,
  39. PRIMARY KEY (id_cw)) TYPE = MyISAM
  40. ROW_FORMAT = DEFAULT;



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


--------------------
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 18:22