2011-03-25 109 views
2

我想知道其他人如何在SQL Server中設計SQL查詢。我只使用「設計查詢編輯器」,但有時我認爲我錯過了一些東西。如何設計查詢或在SQL Server中查找錯誤?

例如,下面的奇怪查詢只是返回一些符合給定條件的ID(這是一個必需的備件矩陣,如果更改了sp1,那麼sp2也必須更改)。我可以改進,但是我的主要問題是我已經設置了一個大括號或太小的括號,並且SQL Server只在第359行(最後一行)中使用「接近錯誤的語法」)註釋它。

如何在查詢中發現/避免此類錯誤?

SELECT idData FROM tabData 
WHERE  (fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/402-22720-0002', 
            'A/402-22710-0003', 'A/402-22720-0001', 'A/402-22710-0001'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0004', 
            'A/415-22710-0011', 'A/415-22710-0031')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/402-22720-0002', 
            'A/402-22710-0003', 'A/402-22720-0001', 'A/402-22710-0001'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/403-22710-0001'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0006', 
            'A/401-22710-0002'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0009'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0006', 
            'A/401-22710-0002'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0006', 
           'A/401-22710-0002'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/321-0000-00292')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/321-0000-00292')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/404-22710-0009', 
            'A/404-22710-0003', 'A/404-22710-0008', 'A/404-22710-0007', 'A/404-22710-0075', 'A/404-22710-0077', 'A/404-22710-0079'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0005')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/8CS-22710-0004')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/8CS-22710-0004')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0003','A/401-22710-0005','A/401-22710-0004','A/401-22710-0001','A/401-22710-0013','A/401-22710-0014','A/401-22710-0015'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/8CS-22710-0004')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/8CS-22710-0004')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0003','A/401-22710-0005','A/401-22710-0004','A/401-22710-0001','A/401-22710-0013','A/401-22710-0014','A/401-22710-0015'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = '1204-8457')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = '1204-8457')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0027')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/412-00000-0010')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0009')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0009')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0007')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0003')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = '1230-9478')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = '1222-5301')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR (fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0015')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005'))) 

非常感謝您的任何建議。

回答

2

獲取SSMS 2008,然後無論何時出現錯誤,雙擊它即可進入該行。繼續添加)(關閉),直到它不再突出顯示(表示與之前不匹配的(匹配)。

至於How do you find/avoid such bugs in your queries?,保持良好的格式化結構,以便括號在不匹配時立即顯示出來。

SELECT idData FROM tabData 
WHERE  (fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/402-22720-0002', 
            'A/402-22710-0003', 'A/402-22720-0001', 'A/402-22710-0001'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0004', 
            'A/415-22710-0011', 'A/415-22710-0031')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/402-22720-0002', 
            'A/402-22710-0003', 'A/402-22720-0001', 'A/402-22710-0001'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/403-22710-0001'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0006', 
            'A/401-22710-0002'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0009'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0006', 
            'A/401-22710-0002'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0006', 
           'A/401-22710-0002'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/321-0000-00292')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/321-0000-00292')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/404-22710-0009', 
            'A/404-22710-0003', 'A/404-22710-0008', 'A/404-22710-0007', 'A/404-22710-0075', 'A/404-22710-0077', 'A/404-22710-0079'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0005')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/8CS-22710-0004')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/8CS-22710-0004')) AND 
     (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0003','A/401-22710-0005','A/401-22710-0004','A/401-22710-0001','A/401-22710-0013','A/401-22710-0014','A/401-22710-0015'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013', 
            'A/415-22710-0010', 'A/415-22710-0028')))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/8CS-22710-0004')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/8CS-22710-0004')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName IN ('A/401-22710-0003','A/401-22710-0005','A/401-22710-0004','A/401-22710-0001','A/401-22710-0013','A/401-22710-0014','A/401-22710-0015'))) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = '1204-8457')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = '1204-8457')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0027')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028')))))))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/412-00000-0010')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0009')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName IN ('A/415-22710-0013','A/415-22710-0010','A/415-22710-0028'))) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0009')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0007')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0003')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = '1230-9478')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR(fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = '1222-5301')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')) 
OR (fiModel = 775) AND EXISTS(SELECT  tabDataDetail_5.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_5 INNER JOIN 
            tabSparePart AS tabSparePart_5 ON tabDataDetail_5.fiSparePart = tabSparePart_5.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_5.fiData) AND (tabDataDetail_5.Material_Quantity >= 1) AND (tabSparePart_5.SparePartName = 'A/415-22710-0015')) AND (NOT EXISTS 
      (SELECT  tabDataDetail_3.idDataDetail 
      FROM   tabDataDetail AS tabDataDetail_3 INNER JOIN 
            tabSparePart AS tabSparePart_3 ON tabDataDetail_3.fiSparePart = tabSparePart_3.idSparePart 
      WHERE  (tabData.idData = tabDataDetail_3.fiData) AND (tabDataDetail_3.Material_Quantity >= 1) AND (tabSparePart_3.SparePartName = 'A/415-22710-0005')))))))))) 
+0

感謝您使用突出顯示的相應括號。這在SQL-Server 2005中也是可能的(我還沒有注意到),並幫助我找到/添加缺失的括號。 – 2011-03-25 10:02:44

1

我遵循三個規則寫這樣複雜的查詢時:

打開一個括號立刻寫在大括號和你想把它們之間寫的時候
  1. 這樣,您就不必只要有可能創建一個視圖無盡的查詢,而是使用具有正確參數的視圖(在你的情況下,它將是一個重複子查詢的觀點)
  2. 一步一步地寫查詢並且每次執行它並檢查結果是否是你期望的他們是
+0

謝謝你的建議,我會牢記這一點。與此同時,我通過查看Richard所建議的突出顯示的對應括號找到了缺失的括號。 – 2011-03-25 10:03:58