* 商品価格一覧表でタイムアウト発生 [#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