奇妙なタイトルのため申し訳ありませんが、私は難解な時間をより記述的なものと考えています。t-sql奇数結合要件
私はあなたは、T-SQLで次のことを実行したい方法を知っておく必要があります。
はあなたがこれらのエンティティのために期待する典型的な1対多の関係では、次の3つのテーブルを持っている想像してみてください。 Itemsテーブル上の「SpecialBooleanFlag」(一瞬でその上より)しかし注意:
Customers: CustomerId, CustomerName, (etc....)
Orders: OrderId, OrderDtm, CustomerId (etc.....)
Items: ItemId, ItemDescripion, OrderId, **SpecialBooleanFlag**
これは、この記事で説明するの奇妙な要件のように、私の手段を超えて聞こえますが、あなたの上司が書くためにあなたを求めて想像これまでに購入したアイテムごとに顧客の完全な注文履歴のすべてを返すクエリ。ただし、の場合、お客様の注文のの1つにSpecialBooleanFlag = 1の商品がある場合、その商品はのようにのように表示されます。
したがって、顧客がSpecialBooleanFlag = 1のアイテムを注文したことがない場合、結果の数は、注文したアイテムの合計数と等しくなければなりません。ただし、5つの注文を出してその注文のうちの1つにSpecialBooleanFlag = 1のアイテムがある場合、結果カウントは5 + 4になり、4つの余分な行がフラグ付きアイテムを実際には一致しなかった4つの注文に関連付けますアイテム。
私はこれをカーソル/ループで一度達成しましたが、解決策が遅すぎます。可能であれば、古い古いセット操作で行う方法を知る必要があります。
編集:
SELECT CustomerName as Name, CustomerId, OrderId, ItemDescription, SpecialBooleanFlag
FROM Customers C
JOIN Orders O on C.CustomerId = O.CustomerId
JOIN Items I on O.OrderId = I.OrderId
WHERE C.CustomerId = 99
結果:全部で合計9つのアイテムと
CustomerName CustomerId OrderId ItemDescription SpecialBooleanFlag
George Washington 99 1 Shoes 0
George Washington 99 1 Shirt 0
George Washington 99 1 Tie 0
George Washington 99 2 Socks 0
George Washington 99 2 Hat 1
George Washington 99 2 Bowtie 0
George Washington 99 3 Green Coat 0
George Washington 99 3 Blue Coat 0
George Washington 99 3 Red Coat 0
ので、顧客が持っていた3件の受注たとえば、次のクエリ/結果セットを想像してみてください。帽子は "特別な"ものだが、注文番号2にあった。私はそれが毎回注文されたかのように見せたい。この結果セットは私が探しているものです。帽子は、それがむしろアイテムと注文IDの1と3の間に関連性よりも、フラグが立てられたという事実に基づく命令1および3上に示しています
CustomerName CustomerId OrderId ItemDescription SpecialBooleanFlag
George Washington 99 1 Shoes 0
George Washington 99 1 Shirt 0
George Washington 99 1 Tie 0
George Washington 99 1 Hat 1
George Washington 99 2 Socks 0
George Washington 99 2 Hat 1
George Washington 99 2 Bowtie 0
George Washington 99 3 Green Coat 0
George Washington 99 3 Blue Coat 0
George Washington 99 3 Red Coat 0
George Washington 99 3 Hat 1
これはより理にかなっていますか?
いくつかのサンプルデータと予想される結果を示しています。 –
ここから始めましょう。 https://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –
あなたは数量または注文/商品のリストをお探しですか? – dbbri