我一直用了好幾天這個追加查詢,並將其隨機引發此異常:查詢太複雜?使用追加查詢
查詢是太複雜
查詢插入到一個不同的表從數據庫中檢索回數據聯合查詢。
INSERT INTO [CA-SSI Dispatch]
SELECT
SSIQuery.[Phonenumber] AS Phonenumber,
SSIQuery.[FormRecordNumber] AS FormRecordNumber,
SSIQuery.[InspectedBY] AS InspectedBY,
SSIQuery.[Project] AS Project,
SSIQuery.[DateTimeInspection] AS DateTimeInspection,
SSIQuery.[Question] AS Question,
SSIQuery.[Answer] AS Answer,
SSIQuery.[Rank] AS Rank,
SSIQuery.[Comment] AS Comment,
SSIQuery.[Regulation] AS Regulation
FROM SSIQuery
WHERE NOT EXISTS
(SELECT * FROM [CA-SSI Dispatch] WHERE SSIQuery.[Phonenumber] = [CA-SSI Dispatch].[Phonenumber]
AND SSIQuery.[FormRecordNumber] =[CA-SSI Dispatch].[FormRecordNumber]
AND SSIQuery.[Project] = [CA-SSI Dispatch].[Project]
AND SSIQuery.[DateTimeInspection] = [CA-SSI Dispatch].[DateTimeInspection]
AND SSIQuery.[Question] = [CA-SSI Dispatch].[Question]
AND SSIQuery.[Answer] = [CA-SSI Dispatch].[Answer]
AND SSIQuery.[FormRecordNumber] = [CA-SSI Dispatch].[FormRecordNumber]);
的INSERT INTO停止工作,並保持返回該錯誤後,我增加了更多的領域,以我的聯合查詢。如果這有助於這是我的聯合查詢的一部分。此聯合查詢,繼續工作。
SELECT
SSIAns.phonenumber AS Phonenumber,
SSIAns.Form_Record_Number As FormRecordNumber,
SSIAns.Inspected_By AS InspectedBY,
SSIAns.Project,
SSIAns.Date_Time_of_Inspection AS DateTimeInspection,
QR.q1 AS Question,
SSIAns.Clean_level_ground AS Answer,
SSIRank.Rank_1 AS Rank,
SSIComment.Comment_1 AS Comment,
QR.r1 AS Regulation
FROM SSIAns, SSIRank,SSIComment, QR
WHERE
SSIRank.Rank_1 = "2_Address_Within_3_Days" AND
SSIAns.Form_Record_Number=SSIRank.Form_Record_Number
AND SSIRank.Form_Record_Number =SSIComment.Form_Record_Number
UNION
SELECT
SSIAns.phonenumber AS Phonenumber,
SSIAns.Form_Record_Number As FormRecordNumber,
SSIAns.Inspected_By AS InspectedBY,
SSIAns.Project,
SSIAns.Date_Time_of_Inspection AS DateTimeInspection,
QR.q2 AS Question,
SSIAns.Adequate_ramps_barricading AS Answer,
SSIRank.Rank_2 AS Rank,
SSIComment.Comment_2 AS Comment,
QR.r1 AS Regulation
FROM SSIAns, SSIRank,SSIComment, QR
WHERE
SSIRank.Rank_2 = "2_Address_Within_3_Days" AND
SSIAns.Form_Record_Number=SSIRank.Form_Record_Number
AND SSIRank.Form_Record_Number =SSIComment.Form_Record_Number
聯合查詢一遍又一遍地顯示下一個相應的字段。例如:rank_3,rank_4等,直到我說
兩個查詢正在努力罰款直到50
UNION
SELECT
SSIAns.phonenumber AS Phonenumber,
SSIAns.Form_Record_Number As FormRecordNumber,
SSIAns.Inspected_By AS InspectedBY,
SSIAns.Project,
SSIAns.Date_Time_of_Inspection AS DateTimeInspection,
QR.q2 AS Question,
SSIAns.Adequate_ramps_barricading AS Answer,
SSIRank.Rank_50 AS Rank,
SSIComment.Comment_50 AS Comment,
QR.r1 AS Regulation
FROM SSIAns, SSIRank,SSIComment, QR
WHERE
SSIRank.Rank_50 = "2_Address_Within_3_Days" AND
SSIAns.Form_Record_Number=SSIRank.Form_Record_Number
AND SSIRank.Form_Record_Number =SSIComment.Form_Record_Number
現在,只有聯合查詢工作,當我嘗試INTO查詢運行INSERT,插入到一個輔助表,我運行錯誤「查詢太複雜」 隨着聯合查詢,我們試圖將問題分解到相應的答案,排名&評論,成一個記錄。所以問題1 &對應的字段是一條記錄。問題2 &對應的字段是不同的記錄。
如果你做了50次基本相同的查詢,你顯然會遇到模式問題。 – Bohemian
我絕對知道你是對的。我們有點卡住了,因爲我們正在使用第三方程序,在訪問表中爲所有97個問題寫入一條記錄,每個問題與排名,評論和答案相關。現在,我們必須將每個單獨的問題及其相關字段分解成一條記錄,並且除了使用這個查詢外,我不太清楚要如何分解它寫入的這些記錄。 – Macellaria
如果您無法更改表格並且表格設計被破壞,您是否可以通過觸發或計劃作業對數據進行一次性規範化,以將數據複製到容易使用的模式中?這個任務會相對簡單,保存你的理智,並允許你創建其他報告 – Bohemian