这里是我的问题:我有一个SQL查询,使查询表的4个调用从另一个表中的组合列表返回它们的值。我最终得到了这个工作,出于某种原因,当我在没有DISTINCT的情况下运行查询时,我得到大量数据,所以我猜测我要么丢失了某些东西,要么不正确地执行此操作。如果这不仅起作用,而且还按照第一个颜色名称的字母顺序返回列表,这将非常棒。 我把我的SQL在这里,我希望我已经解释了这不够好:为什么我必须使用DISTINCT才能正常工作?
SELECT DISTINCT
colour1.ColourID AS colour1_ColourID,
colour1.ColourName AS colour1_ColourName,
colour1.ColourHex AS colour1_ColourHex,
colour1.ManufacturerColourID AS colour1_ManufacturerColourID,
colour2.ColourID AS colour2_ColourID,
colour2.ColourName AS colour2_ColourName,
colour2.ColourHex AS colour2_ColourHex,
colour2.QEColourID2 AS colour2_QEColourID2,
colour3.ColourID AS colour3_ColourID,
colour3.ColourName AS colour3_ColourName,
colour3.ColourHex AS colour3_ColourHex,
colour3.QEColourID3 AS colour3_QEColourID3,
colour4.ColourID AS colour4_ColourID,
colour4.ColourName AS colour4_ColourName,
colour4.ColourHex AS colour4_ColourHex,
colour4.QEColourID4 AS colour4_QEColourID4,
Combinations.ID,
Combinations.ManufacturerColourID AS Combinations_ManufacturerColourID,
Combinations.QEColourID2 AS Combinations_QEColourID2,
Combinations.QEColourID3 AS Combinations_QEColourID3,
Combinations.QEColourID4 AS Combinations_QEColourID4,
Combinations.ColourSupplierID,
ColourSuppliers.ColourSupplier
FROM
ColourSuppliers INNER JOIN
(
colour4 INNER JOIN
(
colour3 INNER JOIN
(
colour2 INNER JOIN
(
colour1 INNER JOIN Combinations ON
colour1.ColourID=Combinations.ManufacturerColourID
) ON colour2.ColourID=Combinations.QEColourID2
) ON colour3.ColourID=Combinations.QEColourID3
) ON colour4.ColourID=Combinations.QEColourID4
) ON ColourSuppliers.ColourSupplierID=Combinations.ColourSupplierID
WHERE Combinations.ColourSupplierID = ?
感谢 斯蒂芬
您可能想尝试重新格式化SQL查询以使其更易于阅读。 – Rich 2010-06-28 15:16:43
你能格式化那段代码吗?请不要将它全部放在一行中?这会让事情变得更容易。 – 2010-06-28 15:16:49
格式化它,但仍然是一个烂摊子 – 2010-06-28 15:21:06