1
我试图连接4个具有复杂关系的表。由于这将用于何处,因此需要将其包含在单个查询中,但由于主查询和IN子句查询都将2个表连接在一起,并且查找在两列上,所以我遇到了麻烦。SQL Server:使用元组IN多重连接IN子句
的目标是输入SalesNum
和SalesType
并让它返回Price
表和关系:
sdShipping
SalesNum[1]
SalesType[2]
Weight[3]
sdSales
SalesNum[1]
SalesType[2]
Zip[4]
个
spZones
Zip[4]
Zone[5]
spPrices
Zone[5]
Price
Weight[3]
这是我在T-SQL的最新尝试:
SELECT
spp.Price
FROM
spZones AS spz
LEFT OUTER JOIN
spPrices AS spp ON spz.Zone = spp.Zone
WHERE
(spp.Weight, spz.Zip) IN (SELECT ship.Weight, sales.Zip
FROM sdShipping AS ship
LEFT OUTER JOIN sdSales AS sales ON sales.SalesNum = ship.SalesNum
AND sales.SalesType = ship.SalesType
WHERE sales.SalesNum = (?)
AND ship.SalesType = (?));
SQL Server Management Studio中说,我有一个错误我的语法靠近','(恰当无用的错误 信息)。任何人都不知道这是否甚至允许在微软的SQL版本中使用?也许还有另一种方法来完成它?我在这里看到了多键IN问题,但从来没有在双方都需要JOIN的情况下回答。
你是一个天才戈登 - 这是真正有用的,谢谢!我仍然没有得到任何结果,但至少它不再给我一个错误了......再也不用浪费时间了。我会尽快找出遗漏的东西,以便得到Price – Typel
@Typel。 。 。您的查询相当复杂。一种可能性是权重不匹配 - 这看起来像一个数字,可能更多的是一个范围。 –
良好的呼叫,我一直在那里一直在使用CEILING来减肥,但是在尝试几次失误之后,必须尝试减肥。还要在SalesNum和SalesType上尝试RTRIM,因为最后偶尔会有空白字符。没有什么,但我觉得它接近... – Typel