Difference between revisions of "VbzCart/procs/Upd TitleIttyps fr CatItems Titles"

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< VbzCart‎ | procs
Jump to navigation Jump to search
(slight re-ordering)
(fixed missing target field)
Line 27: Line 27:
 
       cntInPrint,
 
       cntInPrint,
 
       cntForSale,
 
       cntForSale,
 +
      cntInStock,
 
       qtyInStock,
 
       qtyInStock,
 
       currMinPrice,
 
       currMinPrice,

Revision as of 00:17, 14 November 2010

About

  • Purpose: fills _title_ittyps.
  • Input: cat_items, cat_titles
  • Output: _title_ittyps (replace)
  • History:
    • 2007-09-20
      • Removed "WHERE i.isForSale" because this prevented the availability of discontinued items from being properly zeroed out
      • Added cntInStock calculation; see table schema
    • 2010-11-10
      • Added DROP PROCEDURE for easier maintenance.
      • Actually created in database (procs did not get ported from L48 to Rizzo).
    • 2010-11-13 Source field qtyInStock was renamed to qtyIn_Stk some time ago...
      • Added cntInPrint, cntLines
  • Notes:
    • This is a revised version which combines two earlier procedures.
    • I had a note that "the ID_Dept field is informational, not a grouping", but I don't remember what that meant and it doesn't make sense.

SQL

<mysql>DROP PROCEDURE IF EXISTS Upd_TitleIttyps_fr_CatItems_Titles; CREATE PROCEDURE Upd_TitleIttyps_fr_CatItems_Titles()

   REPLACE INTO _title_ittyps(
     ID_Title,
     ID_ItTyp,
     ID_Dept,
     TitleName,
     cntLines,
     cntCurrent,
     cntInPrint,
     cntForSale,
     cntInStock,
     qtyInStock,
     currMinPrice,
     currMaxPrice)
   SELECT
     i.ID_Title,
     i.ID_ItTyp,
     t.ID_Dept,
     t.Name AS TitleName,
     i.cntLines,
     i.cntCurrent,
     i.cntInPrint,
     i.cntForSale,
     i.cntInStock,
     i.qtyInStock,
     i.currMinPrice,
     i.currMaxPrice
    FROM (
      SELECT
        ID_Title, ID_ItTyp,
        COUNT(ID) AS cntLines,
        SUM(IF(isCurrent,1,0)) AS cntCurrent,
        SUM(IF(isInPrint,1,0)) AS cntInPrint,
        SUM(IF(isForSale,1,0)) AS cntForSale,
        SUM(IF(qtyIn_Stk>0,1,0)) AS cntInStock,
        SUM(qtyIn_Stk) AS qtyInStock,
        MIN(PriceSell) AS currMinPrice,
        MAX(PriceSell) AS currMaxPrice
      FROM cat_items AS i
      GROUP BY ID_Title, ID_ItTyp
    ) AS i LEFT JOIN cat_titles AS t ON i.ID_Title=t.ID;</mysql>