ÏÂÁ ×ÁÒÉÁÎÔÁ ÎÉ Ë Þ£ÒÔÕ :)

    select p.* from from recurs_groups(:id_groups) g
     join products p on g.id=p.id_group

  ÔÁË ÂÕÄÅÔ ÌÕÞØÛÅ, Ô.Ë. ÎÁÓËÏÌØËÏ Ñ ÐÏÍÎÀ, × Ô×Ï£Í ÓÌÕÞÁÅ, ÄÌÑ ëáöäïê
  ÚÁÐÉÓÉ products ÂÕÄÅÔ ×ÙÚÙ×ÁÔØÓÑ recurs_groups ÄÁ ÅÝ£ plan natural :(
  ÷ ÍÏ£Í ÖÅ ×ÁÒÉÁÎÔÅ recurs_groups ×ÙÚÙ×ÁÅÔÓÑ 1 ÒÁÚ ÄÁ ÅÝ£ É ÉÎÄÅËÓ ÉÚ
  products ÉÓÐÏÌØÚÕÅÔÓÑ. åÓÌÉ ËÏÎÅÞÎÏ ID ÜÔÏ Õ ÔÅÂÑ Primary Key :)

äÁ? äÌÑ ÜËÓÐÅÒÉÍÅÎÔÏ× ×ÚÑÔ FB2rc3 ôÏÇÄÁ ÚÁÐÒÏÓ:

     select p.name,p.fullname,p.description,
               sum(di.qty),di.price_prov,di.price,di.discount,
               d.date_docum,d2.date_docum,f.name,g.name,f.code
        from products p, docum_items di, documents d, firms f,
             product_cards pc, docum_items di2, documents d2, groups g,
             (select id from recurs_groups(0)) rg
        where (p.id_product = di.id_product)
          and rg.id=p.id_group
          and (d.id_docum = di.id_docum)
          and (d.date_docum between '01.09.2006' and '09.11.2006')
          and (d.id_operation = 2)
          and (d.id_firm = f.id_firm)
          and (di.id_card = pc.id_card)
          and (pc.id_docitem = di2.id_docitem)
          and (di2.id_docum = d2.id_docum)
          and (p.id_group = g.id_group)
        group by p.name,p.fullname,p.description,
               
di.price_prov,di.price,di.discount,d.date_docum,d2.date_docum,f.name,g.name,f.code

ÐÌÁÎ
PLAN SORT (JOIN (JOIN (JOIN (JOIN (JOIN (GROUPS INDEX (RDB$PRIMARY7), 
RECURS_GROUPS NATURAL), GROUPS INDEX (GROUPS_IDX__PARENT_NAME)), JOIN (G 
INDEX (RDB$PRIMARY7), P INDEX (RDB$FOREIGN43)), DI INDEX (RDB$FOREIGN65)), 
PC INDEX (RDB$PRIMARY10), D INDEX (RDB$PRIMARY3)), DI2 INDEX 
(RDB$PRIMARY4))(F INDEX (RDB$PRIMARY6))(D2 INDEX (RDB$PRIMARY3)))

ÚÁÐÒÏÓ ×ÙÐÏÌÎÑÅÔÓÑ 13ÓÅËÕÎÄ, ÓËÁÎ ÐÏÞÔÉ ×ÓÅÈ ÔÁÂÌÉÃ ÄÏ 132ÔÙÓ ÚÁÐÉÓÅÊ, 
groups 59 ÚÁÐÉÓÉ

ðÅÒÅÐÉÓÙ×ÁÅÍ ÚÁÐÒÏÓ

     select p.name,p.fullname,p.description,
               sum(di.qty),di.price_prov,di.price,di.discount,
               d.date_docum,d2.date_docum,f.name,g.name,f.code
        from products p, docum_items di, documents d, firms f,
             product_cards pc, docum_items di2, documents d2, groups g

        where (p.id_product = di.id_product)
          and exists (select id from recurs_groups(0) where id=p.id_group)
          and (d.id_docum = di.id_docum)
          and (d.date_docum between '01.09.2006' and '09.11.2006')
          and (d.id_operation = 2)
          and (d.id_firm = f.id_firm)
          and (di.id_card = pc.id_card)
          and (pc.id_docitem = di2.id_docitem)
          and (di2.id_docum = d2.id_docum)
          and (p.id_group = g.id_group)
        group by p.name,p.fullname,p.description,
               
di.price_prov,di.price,di.discount,d.date_docum,d2.date_docum,f.name,g.name,f.code

ÐÌÁÎ
PLAN (GROUPS INDEX (RDB$PRIMARY7))(RECURS_GROUPS NATURAL)(GROUPS INDEX 
(GROUPS_IDX__PARENT_NAME))
PLAN SORT (JOIN (D INDEX (DOCUMENTS_IDX, RDB$FOREIGN62), F INDEX 
(RDB$PRIMARY6), DI INDEX (RDB$FOREIGN21), PC INDEX (RDB$PRIMARY10), P INDEX 
(RDB$PRIMARY9), G INDEX (RDB$PRIMARY7), DI2 INDEX (RDB$PRIMARY4), D2 INDEX 
(RDB$PRIMARY3)))

ÚÁÐÒÏÓ ×ÙÐÏÌÎÑÅÔÓÑ  5 ÓÅËÕÎÄ, ÓËÁÎ ÐÏÞÔÉ ×ÓÅÈ ÔÁÂÌÉÃ 5 ÔÙÓ ÚÁÐÉÓÅÊ, Á groups 
110 ÔÙÓ ÚÁÐÉÓÅÊ

Ñ ÄÕÍÁÀ ÞÔÏ ÍÏÊ ×ÁÒÉÁÎÔ ÐÏÌÕÞÛÅ. èÏÔÑ ÎÕÔÒÏÍ ÞÕÀ ÞÔÏ-ÔÏ ÚÄÅÓØ ÎÅ ÄÏ ËÏÎÃÁ 
ÄÏÄÕÍÁÎÏ, ÍÏÖÅÔ ËÔÏ ÉÚ ÇÕÒÕ ÒÁÚ×ÅÅÔ ÍÏÉ ÍÙÓÌÉ?






Ответить