多少複雑な関係にある4つのテーブルを結合しようとしています。このため、1つのクエリに含まれる必要がありますが、プライマリクエリとIN句クエリは両方とも2つのテーブルを結合し、ルックアップは2つの列にあるため、問題があります。SQL Server:タプルIN句のマルチジョイン
目標は、入力にSalesNum
とSalesType
であり、それはPrice
テーブルとの関係を返すがあります。
sdShipping
SalesNum[1]
SalesType[2]
Weight[3]
sdSales
を10spZones
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のは、私がエラーを持っていると言います'、'の近くに私の構文(適切に役に立たないエラーメッセージ)。これはMicrosoftのSQLバージョンでも許可されているのかどうかは誰にも分かりますか?おそらくそれを達成する別の方法はありますか?私はここで答えた複数のキーの質問を見てきましたが、両方の側でJOINが必要な場合は決してありません。
あなたは天才ゴードンだ - それは本当に便利です、ありがとう!私はまだ何の結果も得ていませんが、少なくともそれは私にもうエラーを与えていません...そのIN節で時間を無駄にすることはもうありません。私は価格が – Typel
@Typelになるためにまだ欠けているものが何であるかを知ることができるとすぐに、クレジットを与えます。 。 。あなたの質問はかなり複雑です。 1つの可能性は、ウェイトが一致しないことです。これは、より多くの範囲になる数字のように見えます。 –
良いコール、私はある時点でそこに重量のCEILINGを使用していたが、いくつかの誤った試行後にそれを落とそうとしている必要があります。また、SalesNumとSalesTypeでRTRIMを試行すると、末尾に空白文字があることがあります。まだ何もありませんが、私はそれが近いと感じています。 – Typel