* 商品価格一覧表でタイムアウト発生 [#v47a0dc6]

- ページ: [[BT1]]
- 投稿者: [[太田(西川)]]
- 優先順位: 低
- 状態: 完了
- カテゴリー: 全般
- 投稿日: 2010-05-11 (火) 15:19:59
- バージョン: 

** メッセージ [#p38cfa61]

--------
- SQL文を変更して対応します。今晩にUP予定です。 -- [[太田]] &new{2010-05-11 (火) 15:31:53};
- テスト3サイトにUP致しました。 -- [[太田]] &new{2010-05-11 (火) 16:24:01};
- 念のため修正前のクエリを残しておきます。(クエリ自体は動的生成) -- [[太田]] &new{2010-05-11 (火) 16:25:25};

 DECLARE @全国販社総数 
 INT SELECT @全国販社総数 = 
 (  SELECT COUNT(*)  
 	FROM M代理店子  
 	WHERE M代理店子.代理店ID = M代理店子.直販社ID  
 	AND M代理店子.代理店ID <> '99999999'  
 	AND M代理店子.有効開始日 <= '2010/05/12'  
 	AND M代理店子.有効終了日 >= '2010/05/12'  )  
 	
 	SELECT  	M商品子.新商品コード, 	
 				M商品子.商品名,    
 				M商品子.受注区分,    
 				M商品子.入数,    
 				CASE M商品子.送料無料入数区分 WHEN 0 THEN '' ELSE CONVERT(varchar, M商品子.送料無料入数) + W親商品.発注単位 END AS メーカー送料負担単位,    
 				CASE M商品子.消費税区分 WHEN 1 THEN '○' ELSE '' END AS 内税,    
 				W階層別単価110.単価 AS 全国販社 , 
 				W階層別単価115.単価 AS ウルトラ販社 , 
 				W階層別単価120.単価 AS スーパー販社 , 
 				W階層別単価122.単価 AS 短期スーパー販社 , 
 				W階層別単価130.単価 AS 販社 , 
 				W階層別単価132.単価 AS 短期販社 ,
 				W階層別単価140.単価 AS 全国販社HW社員 ,
 				W階層別単価141.単価 AS ウルトラ販社HW社員 , 
 				W階層別単価142.単価 AS スーパー販社HW社員 ,
 				W階層別単価144.単価 AS 販社HW社員 ,
 				W階層別単価150.単価 AS 総代理店 , 
 				W階層別単価152.単価 AS 短期総代理店 , 
 				W階層別単価170.単価 AS 代理店 , 
 				W階層別単価172.単価 AS 短期代理店 , 
 				W階層別単価180.単価 AS 委託ショップ ,
 				W階層別単価200.単価 AS 環境保全委託契約社員 , 
 				W階層別単価202.単価 AS 環境保全委託契約社員待機 , 
 				W階層別単価204.単価 AS 講習会販売先 , 
 				W階層別単価210.単価 AS 特約店 , 
 				W階層別単価250.単価 AS 一般 
 				
 				FROM M商品子  
 				LEFT JOIN M階層別単価 AS W階層別単価110  
 				ON M商品子.商品ID = W階層別単価110.商品ID  
 				AND W階層別単価110.階層ID = 110  
 				AND W階層別単価110.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価110.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価115  
 				ON M商品子.商品ID = W階層別単価115.商品ID  
 				AND W階層別単価115.階層ID = 115  
 				AND W階層別単価115.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価115.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価120  
 				ON M商品子.商品ID = W階層別単価120.商品ID  
 				AND W階層別単価120.階層ID = 120  
 				AND W階層別単価120.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価120.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価122  
 				ON M商品子.商品ID = W階層別単価122.商品ID  
 				AND W階層別単価122.階層ID = 122  
 				AND W階層別単価122.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価122.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価130  
 				ON M商品子.商品ID = W階層別単価130.商品ID  
 				AND W階層別単価130.階層ID = 130  
 				AND W階層別単価130.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価130.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価132  
 				ON M商品子.商品ID = W階層別単価132.商品ID  
 				AND W階層別単価132.階層ID = 132  
 				AND W階層別単価132.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価132.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価140  
 				ON M商品子.商品ID = W階層別単価140.商品ID  
 				AND W階層別単価140.階層ID = 140  
 				AND W階層別単価140.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価140.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価141  
 				ON M商品子.商品ID = W階層別単価141.商品ID  
 				AND W階層別単価141.階層ID = 141  
 				AND W階層別単価141.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価141.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価142  
 				ON M商品子.商品ID = W階層別単価142.商品ID  
 				AND W階層別単価142.階層ID = 142  
 				AND W階層別単価142.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価142.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価144  
 				ON M商品子.商品ID = W階層別単価144.商品ID  
 				AND W階層別単価144.階層ID = 144  
 				AND W階層別単価144.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価144.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価150  
 				ON M商品子.商品ID = W階層別単価150.商品ID  
 				AND W階層別単価150.階層ID = 150  
 				AND W階層別単価150.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価150.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価152  
 				ON M商品子.商品ID = W階層別単価152.商品ID  
 				AND W階層別単価152.階層ID = 152  
 				AND W階層別単価152.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価152.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価170  
 				ON M商品子.商品ID = W階層別単価170.商品ID  
 				AND W階層別単価170.階層ID = 170  
 				AND W階層別単価170.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価170.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価172  
 				ON M商品子.商品ID = W階層別単価172.商品ID  
 				AND W階層別単価172.階層ID = 172  
 				AND W階層別単価172.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価172.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価180  
 				ON M商品子.商品ID = W階層別単価180.商品ID  
 				AND W階層別単価180.階層ID = 180  
 				AND W階層別単価180.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価180.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価200  
 				ON M商品子.商品ID = W階層別単価200.商品ID  
 				AND W階層別単価200.階層ID = 200  
 				AND W階層別単価200.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価200.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価202  
 				ON M商品子.商品ID = W階層別単価202.商品ID  
 				AND W階層別単価202.階層ID = 202  
 				AND W階層別単価202.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価202.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価204  
 				ON M商品子.商品ID = W階層別単価204.商品ID  
 				AND W階層別単価204.階層ID = 204  
 				AND W階層別単価204.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価204.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価210  
 				ON M商品子.商品ID = W階層別単価210.商品ID  
 				AND W階層別単価210.階層ID = 210  
 				AND W階層別単価210.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価210.商品有効終了日 >= '2010/05/12' 
 				LEFT JOIN M階層別単価 AS W階層別単価250  
 				ON M商品子.商品ID = W階層別単価250.商品ID  
 				AND W階層別単価250.階層ID = 250  
 				AND W階層別単価250.商品有効開始日 <= '2010/05/12'  
 				AND W階層別単価250.商品有効終了日 >= '2010/05/12' 
 				
 				LEFT JOIN M商品子 AS W親商品   
 				ON M商品子.親商品ID = W親商品.商品ID   
 				AND W親商品.商品有効開始日 <= '2010/05/12'   
 				AND W親商品.商品有効終了日 >= '2010/05/12'  
 				
 				WHERE M商品子.商品有効開始日 <= '2010/05/12'   
 				AND M商品子.商品有効終了日 >= '2010/05/12'   
 				AND M商品子.マスター区分 = 0   
 				AND M商品子.本社受注区分 = 0   
 				AND M商品子.受注可能判定=1  
 				 
 				AND (    
 					SELECT COUNT(*)    
 					FROM M直販社別商品    
 					WHERE M直販社別商品.商品ID = M商品子.商品ID    
 					AND M直販社別商品.商品有効開始日 <= '2010/05/12'    
 					AND M直販社別商品.商品有効終了日 >= '2010/05/12'    ) = @全国販社総数 
 ORDER BY M商品子.新商品コード
- 以下が修正後です。 -- [[太田]] &new{2010-05-11 (火) 16:28:16};
 DECLARE @全国販社総数 
 INT SELECT @全国販社総数 = 
 (  SELECT COUNT(*)  
 	FROM M代理店子  
 	WHERE M代理店子.代理店ID = M代理店子.直販社ID  
 	AND M代理店子.代理店ID <> '99999999'  
 	AND M代理店子.有効開始日 <= '2010/05/12'  
 	AND M代理店子.有効終了日 >= '2010/05/12'  )  
 
 	SELECT  	M商品子.新商品コード, 	
 				M商品子.商品名,    
 				M商品子.受注区分,    
 				M商品子.入数,    
 				CASE M商品子.送料無料入数区分 WHEN 0 THEN '' ELSE CONVERT(varchar, M商品子.送料無料入数) + W親商品.発注単位 END AS メーカー送料負担単位,    
 				CASE M商品子.消費税区分 WHEN 1 THEN '○' ELSE '' END AS 内税,    
 				W階層別単価.全国販社 , 
 				W階層別単価.ウルトラ販社 , 
 				W階層別単価.スーパー販社 , 
 				W階層別単価.短期スーパー販社 , 
 				W階層別単価.販社 , 
 				W階層別単価.短期販社 ,
 				W階層別単価.全国販社HW社員 ,
 				W階層別単価.ウルトラ販社HW社員 , 
 				W階層別単価.スーパー販社HW社員 ,
 				W階層別単価.販社HW社員 ,
 				W階層別単価.総代理店 , 
 				W階層別単価.短期総代理店 , 
 				W階層別単価.代理店 , 
 				W階層別単価.短期代理店 , 
 				W階層別単価.委託ショップ ,
 				W階層別単価.環境保全委託契約社員 , 
 				W階層別単価.環境保全委託契約社員待機 , 
 				W階層別単価.講習会販売先 , 
 				W階層別単価.特約店 , 
 				W階層別単価.一般 
 FROM
 (
 SELECT
 	M商品子.商品ID
 	,SUM(CASE WHEN M階層別単価.階層ID=110 THEN M階層別単価.単価 ELSE 0 END) AS 全国販社
 	,SUM(CASE WHEN M階層別単価.階層ID=115 THEN M階層別単価.単価 ELSE 0 END) AS ウルトラ販社
 	,SUM(CASE WHEN M階層別単価.階層ID=120 THEN M階層別単価.単価 ELSE 0 END) AS スーパー販社 
 	,SUM(CASE WHEN M階層別単価.階層ID=122 THEN M階層別単価.単価 ELSE 0 END) AS 短期スーパー販社 
 	,SUM(CASE WHEN M階層別単価.階層ID=130 THEN M階層別単価.単価 ELSE 0 END) AS 販社
 	,SUM(CASE WHEN M階層別単価.階層ID=132 THEN M階層別単価.単価 ELSE 0 END) AS 短期販社
 	,SUM(CASE WHEN M階層別単価.階層ID=140 THEN M階層別単価.単価 ELSE 0 END) AS 全国販社HW社員
 	,SUM(CASE WHEN M階層別単価.階層ID=141 THEN M階層別単価.単価 ELSE 0 END) AS ウルトラ販社HW社員 
 	,SUM(CASE WHEN M階層別単価.階層ID=142 THEN M階層別単価.単価 ELSE 0 END) AS スーパー販社HW社員
 	,SUM(CASE WHEN M階層別単価.階層ID=144 THEN M階層別単価.単価 ELSE 0 END) AS 販社HW社員
 	,SUM(CASE WHEN M階層別単価.階層ID=150 THEN M階層別単価.単価 ELSE 0 END) AS 総代理店 
 	,SUM(CASE WHEN M階層別単価.階層ID=152 THEN M階層別単価.単価 ELSE 0 END) AS 短期総代理店 
 	,SUM(CASE WHEN M階層別単価.階層ID=170 THEN M階層別単価.単価 ELSE 0 END) AS 代理店 
 	,SUM(CASE WHEN M階層別単価.階層ID=172 THEN M階層別単価.単価 ELSE 0 END) AS 短期代理店 
 	,SUM(CASE WHEN M階層別単価.階層ID=180 THEN M階層別単価.単価 ELSE 0 END) AS 委託ショップ
 	,SUM(CASE WHEN M階層別単価.階層ID=200 THEN M階層別単価.単価 ELSE 0 END) AS 環境保全委託契約社員 
 	,SUM(CASE WHEN M階層別単価.階層ID=202 THEN M階層別単価.単価 ELSE 0 END) AS 環境保全委託契約社員待機 
 	,SUM(CASE WHEN M階層別単価.階層ID=204 THEN M階層別単価.単価 ELSE 0 END) AS 講習会販売先 
 	,SUM(CASE WHEN M階層別単価.階層ID=210 THEN M階層別単価.単価 ELSE 0 END) AS 特約店 
 	,SUM(CASE WHEN M階層別単価.階層ID=250 THEN M階層別単価.単価 ELSE 0 END) AS 一般 
 FROM
 	M商品子
 	LEFT JOIN M階層別単価
 	ON M階層別単価.商品ID = M商品子.商品ID
  	/* ↓以下の条件が抜けていました 2010-05-14 */
  	/* ↓もう手遅れですが、以下の条件が抜けていました 2010-05-14 */
 	AND M階層別単価.商品有効開始日 <= '2010/05/12'
 	AND M階層別単価.商品有効終了日 >= '2010/05/12'
 	/* ↑ */
 WHERE
 				M商品子.商品有効開始日 <= '2010/05/12'   
 				AND M商品子.商品有効終了日 >= '2010/05/12'   
 				AND M商品子.マスター区分 = 0   
 				AND M商品子.本社受注区分 = 0   
 				AND M商品子.受注可能判定=1  
 				AND (    
 					SELECT COUNT(*)    
 					FROM M直販社別商品    
 					WHERE M直販社別商品.商品ID = M商品子.商品ID    
 					AND M直販社別商品.商品有効開始日 <= '2010/05/12'    
 					AND M直販社別商品.商品有効終了日 >= '2010/05/12'    ) = @全国販社総数
 GROUP BY
 	M商品子.商品ID
 ) AS W階層別単価
 
 LEFT JOIN M商品子
 ON M商品子.商品ID = W階層別単価.商品ID
 AND M商品子.商品有効開始日 <= '2010/05/12'
 AND M商品子.商品有効終了日 >= '2010/05/12'
 
 LEFT JOIN M商品子 AS W親商品   
 ON M商品子.親商品ID = W親商品.商品ID   
 AND W親商品.商品有効開始日 <= '2010/05/12'   
 AND W親商品.商品有効終了日 >= '2010/05/12'  
 
 ORDER BY
 M商品子.新商品コード
- 本サイト更新致しましたので、ご確認下さい。 -- [[太田]] &new{2010-05-11 (火) 20:03:12};
- 数値に誤りがあったので、再度SQL文を以下のように変更 -- [[太田]] &new{2010-05-12 (水) 15:21:00};

 DECLARE @全国販社総数 
 INT SELECT @全国販社総数 = 
 (  SELECT COUNT(*)  
 	FROM M代理店子  
 	WHERE M代理店子.代理店ID = M代理店子.直販社ID  
 	AND M代理店子.代理店ID <> '99999999'  
 	AND M代理店子.有効開始日 <= '2010/05/13'  
 	AND M代理店子.有効終了日 >= '2010/05/13'  )  
 
 	SELECT  	M商品子.新商品コード, 	
 				M商品子.商品名,    
 				M商品子.受注区分,    
 				M商品子.入数,    
 				CASE M商品子.送料無料入数区分 WHEN 0 THEN '' ELSE CONVERT(varchar, M商品子.送料無料入数) + W親商品.発注単位 END AS メーカー送料負担単位,    
 				CASE M商品子.消費税区分 WHEN 1 THEN '○' ELSE '' END AS 内税,    
 				W階層別単価.全国販社 
 FROM
 (
 SELECT
 	M商品子.商品ID
 	,SUM(CASE WHEN M階層別単価.階層ID=110 THEN M階層別単価.単価 ELSE 0 END) AS 全国販社
 FROM
 	M商品子
 	LEFT JOIN M階層別単価
 	ON M階層別単価.商品ID = M商品子.商品ID
 WHERE
 				M商品子.商品有効開始日 <= '2010/05/13'   
 				AND M商品子.商品有効終了日 >= '2010/05/13'   
 				AND M商品子.マスター区分 = 0   
 				AND M商品子.本社受注区分 = 0   
 				AND M商品子.受注可能判定=1  
 				AND (    
 					SELECT COUNT(*)    
 					FROM M直販社別商品    
 					WHERE M直販社別商品.商品ID = M商品子.商品ID    
 					AND M直販社別商品.商品有効開始日 <= '2010/05/13'    
 					AND M直販社別商品.商品有効終了日 >= '2010/05/13'    ) = @全国販社総数
 GROUP BY
 	M商品子.商品ID
 ) AS W階層別単価
 
 LEFT JOIN M商品子
 ON M商品子.商品ID = W階層別単価.商品ID
 AND M商品子.商品有効開始日 <= '2010/05/13'
 AND M商品子.商品有効終了日 >= '2010/05/13'
 
 LEFT JOIN M商品子 AS W親商品   
 ON M商品子.親商品ID = W親商品.商品ID   
 AND W親商品.商品有効開始日 <= '2010/05/13'   
 AND W親商品.商品有効終了日 >= '2010/05/13'  
 
 ORDER BY
 M商品子.新商品コード
- 上記をもとに、新たにdtblをプログラム内で作成し直して対応します。 -- [[太田]] &new{2010-05-12 (水) 15:22:44};
- テストサイトにUP致します。 -- [[太田]] &new{2010-05-12 (水) 15:26:51};
- テストサイトで確認して頂けたので、今夜本サイトにUP致します。 -- [[太田]] &new{2010-05-12 (水) 18:58:09};
- 本サイトにUP済みです。 -- [[太田]] &new{2010-05-13 (木) 10:14:23};
- 更新確認いたしました。[完了]とします。 -- [[西川]] &new{2010-05-13 (木) 10:37:17};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS