商品価格一覧表でタイムアウト発生 †
- ページ: BT1
- 投稿者: 太田(西川)?
- 優先順位: 低
- 状態: 完了
- カテゴリー: 全般
- 投稿日: 2010-05-11 (火) 15:19:59
- バージョン:
メッセージ †
- SQL文を変更して対応します。今晩にUP予定です。 -- 太田
- テスト3サイトにUP致しました。 -- 太田
- 念のため修正前のクエリを残しておきます。(クエリ自体は動的生成) -- 太田
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商品子.新商品コード
- 以下が修正後です。 -- 太田
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
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商品子.新商品コード
- 本サイト更新致しましたので、ご確認下さい。 -- 太田
- 数値に誤りがあったので、再度SQL文を以下のように変更 -- 太田
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をプログラム内で作成し直して対応します。 -- 太田
- テストサイトにUP致します。 -- 太田
- テストサイトで確認して頂けたので、今夜本サイトにUP致します。 -- 太田
- 本サイトにUP済みです。 -- 太田
- 更新確認いたしました。[完了]とします。 -- 西川