“超时已过期”救命啊!!!
老田低代码 2005-08-26 03:39:50 根据客户的需求定制了张报表,其中Left Join同一个表很多次:
SELECT .......
FROM ((((Policy p LEFT JOIN
Carrier AS c ON p.CarrierID = c.CarrierID) LEFT JOIN
Customer AS u ON p.CustomerID = u.CustID) LEFT JOIN
ProductType AS r ON p.ProdTypeID = r.ProdTypeID) LEFT JOIN
Sales AS s ON p.SalesID = s.SalesID) LEFT JOIN
Branch B ON B.BranchId = P.Branchid LEFT JOIN
SourceType ST ON ST.SourceTypeid = p.SourceTypeid LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 1) v1 ON p.PolicyID = v1.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 2) v2 ON p.PolicyID = v2.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 3) v3 ON p.PolicyID = v3.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 4) v4 ON p.PolicyID = v4.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 5) v5 ON p.PolicyID = v5.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 6) v6 ON p.PolicyID = v6.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 7) v7 ON p.PolicyID = v7.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 9) v8 ON p.PolicyID = v8.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 10) v9 ON p.PolicyID = v9.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 11) v10 ON p.PolicyID = v10.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 13) v11 ON p.PolicyID = v11.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 14) v12 ON p.PolicyID = v12.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 19) v13 ON p.PolicyID = v13.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 26) v14 ON p.PolicyID = v14.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 27) v15 ON p.PolicyID = v15.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 28) v16 ON p.PolicyID = v16.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 29) v17 ON p.PolicyID = v17.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 30) v18 ON p.PolicyID = v18.PolicyID LEFT JOIN
(SELECT *
FROM TargetData
WHERE PropertyID = 31) v19 ON p.PolicyID = v19.PolicyID
WHERE .......
其中V1到V19都是同一个表的别名,但是总是容易出现“超时已过期”这样的错误提示,我已经想办法将ADODB.Connection对象的TimeOut设置比较大了还是容易出现这样的提示。
我也知道同时Left Join这么多的表实在是不明智,但是没有办法啊,客户需求,所以我想请教各位大侠、前辈们有没有什么比较好的方法来对这个语句进行优化。。。。