ďťż
 
Jak sformułować zapytanie SQL ? ďťż
 
Jak sformułować zapytanie SQL ?
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Jak sformułować zapytanie SQL ?



Marek - 13-11-2006 00:44
Jak sformułować zapytanie SQL ?
  Witam,

Chciałbym wyświetlić listę 10 najbardziej podobnych produktów sklepu
internetowego. Miarą podobieństwa jest posiadanie zbliżonej ilości tych
samych cech produktu. Ułożyłem zatem następujące zapytanie do bazy:

$sql="SELECT * FROM document WHERE document_id IN (
SELECT dp2.document_id
FROM document3_property dp1, document3_property dp2
WHERE dp1.document_id=".$documentId."
AND dp1.property3_option_id=dp2.property3_option_id
GROUP BY dp2.document_id
ORDER BY count(dp2.document_id) DESC
LIMIT 10"
)";

Tabela document3_property posiada identyfikator cechy produktu w polu
property3_option_id oraz identyfikator dokumentu document_id, do którego
przynależy dana cecha. Zapytanie funkcjonuje lecz nie jestem w stanie
wydobyć z niego wartości count(dp2.document_id), która jest miarą
podobieństwa. Jednocześnie interesuje mnie dostępność do wszystkich pól
struktury document. Czy istnieje możliwość wydobycia wartości
count(dp2.document_id) bez zadawania kolejnego podzapytania do bazy?

--
Pozdrawiam,
Marek





Paweł Matejski - 13-11-2006 00:45

  Marek wrote:
> Witam,
>
> Chciałbym wyświetlić listę 10 najbardziej podobnych produktów sklepu
> internetowego. Miarą podobieństwa jest posiadanie zbliżonej ilości tych
> samych cech produktu. Ułożyłem zatem następujące zapytanie do bazy:
>
> $sql="SELECT * FROM document WHERE document_id IN (
> SELECT dp2.document_id
> FROM document3_property dp1, document3_property dp2
> WHERE dp1.document_id=".$documentId."
> AND dp1.property3_option_id=dp2.property3_option_id
> GROUP BY dp2.document_id
> ORDER BY count(dp2.document_id) DESC
> LIMIT 10"
> )";
>
> Tabela document3_property posiada identyfikator cechy produktu w polu
> property3_option_id oraz identyfikator dokumentu document_id, do którego
> przynależy dana cecha. Zapytanie funkcjonuje lecz nie jestem w stanie
> wydobyć z niego wartości count(dp2.document_id), która jest miarą
> podobieństwa. Jednocześnie interesuje mnie dostępność do wszystkich pól
> struktury document. Czy istnieje możliwość wydobycia wartości
> count(dp2.document_id) bez zadawania kolejnego podzapytania do bazy?

Rozbuduj zewnętrzne zapytanie tak, żeby było takie jak wewnętrzne + operowanie
na tabli document. Będzie operowało juz tylko na 10 rekordach, więc będzie
szybkie w stosunku do wewnętrznego.

--
P.M.




Marek - 13-11-2006 00:45

  > Rozbuduj zewnętrzne zapytanie tak, żeby było takie jak wewnętrzne +
> operowanie
> na tabli document. Będzie operowało juz tylko na 10 rekordach, więc będzie
> szybkie w stosunku do wewnętrznego.

Dzięki, właśnie miałem wątpliwości co do wydajności...
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= =?ISO-8859-2?Q?k=B3opot_z_uruchomieniem_MY_SQL_dla_C?==?ISO-8859-2?Q?MS_i_CRM_na_Fedora_Core_3?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= [MSSQL] ACCESS - SQL =?ISO-8859-2?Q?B=B3ad_w_konwersji_lic?==?ISO-8859-2?Q?zb?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [newbie] MS SQL - praca =?ISO-8859-2?Q?jednocze=B6nie_na_2_?==?ISO-8859-2?Q?bazach_=28linkowanie_=3F=29?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • morebeer.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com