[mssql] Dane pośrednie, jak wyjąć/wykorzystać ponownie? jak to zrobić?
Sexbox - 20-03-2006 01:30
[mssql] Dane pośrednie, jak wyjąć/wykorzystać ponownie? jak to zrobić?
Witam
Potrzebuję dwóch grup danych uzyskiwanych z kilku tych samych tabel. 1) CENNIK TOWARÓW złożenie tabel: Cennik: Towary + Ceny + Cechy as f1 + Cechy as f2 2) WSZYSTKIE CECHY towarów z cenika z 1)
W 1) - CENNIKU wyciągam z tab. Cechy tylko 2 konkretne cechy (Grupę, Producent) Natomiast w drugim potrzebuję już same cechy ale WSZYSTKIE tych towaów uzyskanych w pierwszym pytaniu.
1) Mój CENNIK to zapytanie:
SELECT t.ID, t.Nazwa, c.Detal, f1.Value as Grupa, f2.Value as Producent FROM Towary as t JOIN Ceny as c ON t.ID = t.ID JOIN Cechy as f1 ON t.ID = f1.Towar AND f1.Key = 'Grupa' LEFT JOIN Cechy as f2 ON t.ID = f2.Towar AND f2.Key = 'Producent' WHERE f1.Value = 'Drukarki'
2) Moje WSZYSTKIE CECHY dało by zapytanie:
SELECT distinct f3.Key, f3.Value FROM Cechy as f3 WHERE f3.Towar in (SELECT t.ID FROM [...to co wyżej przy cenniku...])
W sumie te drugie zapytanie mimo mniejszej dla mnie wagi jest bardziej złożone od pierwszego.
CZY JEST METODA aby dane (towary) uzyskane z pierwszego zapytania wykorzystać jakoś przy drugim??? BEZ PONOWNEGO ODPYTYWANIA BAZY?
Tab. Cechy ma postać: Towar|Key|Value 1|Grupa|Drukarki 1|Producent|HP 1|Kolor|Czarny 2|Grupa|Klawiatury 2|Producent|Logitech 3|Ilośc guzików|101
Będę wdzięczny za wszelkie sugestie, baza to MSSQL.
keczerad - 20-03-2006 01:30
Sexbox napisał(a):
> CZY JEST METODA aby dane (towary) uzyskane z pierwszego zapytania > wykorzystać jakoś przy drugim??? BEZ PONOWNEGO ODPYTYWANIA BAZY?
z pierwszego zapytanie zrobic widok i odpytywac widok
--
keczerad
http://www.e-mo.com.pl sklep w (X)HTML
Sexbox - 20-03-2006 01:30
>> CZY JEST METODA aby dane (towary) uzyskane z pierwszego zapytania >> wykorzystać jakoś przy drugim??? BEZ PONOWNEGO ODPYTYWANIA BAZY? > > z pierwszego zapytanie zrobic widok i odpytywac widok
Tak, wiem. To załatwia ale jedynie w przejrzystości kodu.
A mi chodziło o jego optymalizację pod względem wydajności. Wydaje mi się, że bez sensu jeszcze raz wyszukiwać ID towarów gdy w poprzednim zapytaniu już je uzyskaliśmy.
Myślałem też o zbuforowaniu wyników (t.ID) za pomocą tabeli PHP a potem zbudować odpowiednie zapytanie.
"SELECT distinct f3.Key, f3.Value". "FROM Cechy as f3". "WHERE f3.Towar in ('".implode ("', '", $bufor)."')"
Ale to takie chyba nieeleganckie i takie nie w stylu SQLowym.
keczerad - 20-03-2006 01:30
Sexbox napisał(a): >>>CZY JEST METODA aby dane (towary) uzyskane z pierwszego zapytania >>>wykorzystać jakoś przy drugim??? BEZ PONOWNEGO ODPYTYWANIA BAZY? >> >>z pierwszego zapytanie zrobic widok i odpytywac widok > > > Tak, wiem. To załatwia ale jedynie w przejrzystości kodu. > > A mi chodziło o jego optymalizację pod względem wydajności. > Wydaje mi się, że bez sensu jeszcze raz wyszukiwać ID towarów gdy > w poprzednim zapytaniu już je uzyskaliśmy. > > Myślałem też o zbuforowaniu wyników (t.ID) za pomocą tabeli PHP > a potem zbudować odpowiednie zapytanie. > > "SELECT distinct f3.Key, f3.Value". > "FROM Cechy as f3". > "WHERE f3.Towar in ('".implode ("', '", $bufor)."')" > > Ale to takie chyba nieeleganckie i takie nie w stylu SQLowym. > > >
moim zdaniem twoj problem wynika tez z zle zbudowanej tablicy 2, ktora moim zdniem powinna byc zbudowana na zasadzie drzewa, i to w pierwszej tablicy powinno byc odwolanie do tablicy 2, przynajnie ja tak mam i sie latwo dostaje do tego
slave_producent to tak zwana kategoria glowna, do ktorej nalezy prdukt
Produkty : id| nazwa | slave_producent | 1| Drukarka atrmentowa HP | 3
Kategorie ID| Nazwa | Rodzic 1| HP | 0 2|Drukarki | 1 3|Atramentowe | 2
i tablica do powiazań poniewaz w branży IT moze sie okazac ze towar moze nalezyc do kliku kategorii
Powiazanie kategorii, wiele produktow do wielu kategorii
ID|ID_Produktu|ID_Kategorii 1| 1 | 3
i to u mnie sie sprawdza
--
keczerad
http://www.e-mo.com.pl sklep w (X)HTML
Sexbox - 20-03-2006 01:30
> slave_producent to tak zwana kategoria glowna, do ktorej nalezy prdukt > > Produkty : > id| nazwa | slave_producent | > 1| Drukarka atrmentowa HP | 3 > > Kategorie > ID| Nazwa | Rodzic > 1| HP | 0 > 2|Drukarki | 1 > 3|Atramentowe | 2 > > i tablica do powiazań poniewaz w branży IT moze sie okazac ze towar moze > nalezyc do kliku kategorii > > Powiazanie kategorii, wiele produktow do wielu kategorii > > ID|ID_Produktu|ID_Kategorii > 1| 1 | 3 > > i to u mnie sie sprawdza
Może i masz rację, ale ja obsługuje bazę którą już zastałem (aplikacji Enova). Więc muszę obsłużyć to co mam i to jak najsprawniej bo baza będzie bardzo mocno obciążona.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Zdalny =?ISO-8859-2?Q?dost=EAp_do_MSSQL_bez_zarz=B1dzani?==?ISO-8859-2?Q?a?=
[MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?=
[MSSQL 2k] - jak =?ISO-8859-2?Q?pod=B3=B1czy=E6_serwer_na_?==?ISO-8859-2?Q?porcie_innym_ni=BF_1433=3F?=
MSSQL Express czy Oracle Express
MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?=
[MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?=
[MSSQL 2000] =?ISO-8859-2?Q?wywo=B3anie_procesu_z_poziomu_?==?ISO-8859-2?Q?job=27a?=
[MSSQL 2K] =?ISO-8859-2?Q?Wp=B3yw_ustawie=F1_regionalnych_?==?ISO-8859-2?Q?serwera_na_zapytania?=
Pobierananie danych z innej bazy danych w MSSQL
Migracja MSSQL 2005 CTP na 2005 Express
zanotowane.pldoc.pisz.plpdf.pisz.plshutter.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|