VbzCart/docs/procs/Upd TitleIttyps fr CatItems Titles: Difference between revisions
Jump to navigation
Jump to search
imported>Woozle (conditions to prevent records with null ID_Dept and ID_ItTyp) |
imported>Woozle (better stock numbers) |
||
Line 1: | Line 1: | ||
==About== | ==About== | ||
* '''Purpose''': fills {{vbzcart|table|_title_ittyps}}. | * '''Purpose''': fills {{vbzcart|table|_title_ittyps}}. | ||
* '''Input''': {{vbzcart|table|cat_items}}, {{vbzcart|table|cat_titles}} | * '''Input''': {{vbzcart|table|cat_items}}, {{vbzcart|table|cat_titles}}, {{vbzcart/query|qryStk_items_remaining}} | ||
* '''Output''': {{vbzcart|table|_title_ittyps}} (replace) | * '''Output''': {{vbzcart|table|_title_ittyps}} (replace) | ||
* '''History''': | * '''History''': | ||
Line 13: | Line 13: | ||
*** Added '''cntInPrint''', '''cntLines''' | *** Added '''cntInPrint''', '''cntLines''' | ||
*** Added (ID_Dept IS NOT NULL) AND (ID_ItTyp IS NOT NULL) to prevent those fields being null (not allowed in target table) | *** Added (ID_Dept IS NOT NULL) AND (ID_ItTyp IS NOT NULL) to prevent those fields being null (not allowed in target table) | ||
** '''2011-01-23''' fetching Stock data from {{vbzcart/query|qryStk_items_remaining}} instead of relying on {{vbzcart|table|cat_items}} to be current | |||
* '''Notes''': | * '''Notes''': | ||
** This is a revised version which combines two earlier procedures. | ** This is a revised version which combines two earlier procedures. | ||
Line 52: | Line 53: | ||
SUM(IF(isInPrint,1,0)) AS cntInPrint, | SUM(IF(isInPrint,1,0)) AS cntInPrint, | ||
SUM(IF(isForSale,1,0)) AS cntForSale, | SUM(IF(isForSale,1,0)) AS cntForSale, | ||
SUM(IF( | SUM(IF(iq.qtyForSale>0,1,0)) AS cntInStock, | ||
SUM( | SUM(iq.qtyForSale) AS qtyInStock, | ||
MIN(PriceSell) AS currMinPrice, | MIN(PriceSell) AS currMinPrice, | ||
MAX(PriceSell) AS currMaxPrice | MAX(PriceSell) AS currMaxPrice | ||
FROM cat_items AS i | FROM cat_items AS i LEFT JOIN qryStk_items_remaining AS iq ON i.ID=iq.ID_Item | ||
GROUP BY ID_Title, ID_ItTyp | GROUP BY ID_Title, ID_ItTyp | ||
) AS i LEFT JOIN cat_titles AS t ON i.ID_Title=t.ID | ) AS i LEFT JOIN cat_titles AS t ON i.ID_Title=t.ID | ||
WHERE (ID_Dept IS NOT NULL) AND (ID_ItTyp IS NOT NULL);</mysql> | WHERE (ID_Dept IS NOT NULL) AND (ID_ItTyp IS NOT NULL);</mysql> | ||
<section end=sql /> | <section end=sql /> |
Revision as of 01:53, 24 January 2011
About
- Purpose: fills Template:Vbzcart.
- Input: Template:Vbzcart, Template:Vbzcart, Template:Vbzcart/query
- Output: Template:Vbzcart (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
- Added (ID_Dept IS NOT NULL) AND (ID_ItTyp IS NOT NULL) to prevent those fields being null (not allowed in target table)
- 2011-01-23 fetching Stock data from Template:Vbzcart/query instead of relying on Template:Vbzcart to be current
- 2007-09-20
- 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
<section begin=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(iq.qtyForSale>0,1,0)) AS cntInStock, SUM(iq.qtyForSale) AS qtyInStock, MIN(PriceSell) AS currMinPrice, MAX(PriceSell) AS currMaxPrice FROM cat_items AS i LEFT JOIN qryStk_items_remaining AS iq ON i.ID=iq.ID_Item GROUP BY ID_Title, ID_ItTyp ) AS i LEFT JOIN cat_titles AS t ON i.ID_Title=t.ID WHERE (ID_Dept IS NOT NULL) AND (ID_ItTyp IS NOT NULL);</mysql>
<section end=sql />