0

メンバーとそのカード番号を含むテーブルと、アウトレットごとのカード番号範囲を識別するアウトレット テーブルの 2 つのテーブルがあります。会員のカード番号がどこの店舗のものか知りたいです。

メンバー表

MemberID    Cardnumber    FirstName   LastName
1           123456123     John        Doe
2           123456245     Sarah       Smith

アウトレットテーブル

OutletID    OutletName      StartCardNumber     EndCardNumber
1           Balmain Store   123456100           123456200
2           Sydney Store    123456201           123456300

最初に一時テーブルを作成しなくても、次の情報を取り戻すことができるスクリプトは考えられません。もっと簡単な方法はありますか?

CardNumber  FirstName LastName   OutletName
123456123   John      Doe        Balmain Store
123456245   Sarah     Smith      Sydney Store
4

1 に答える 1

2

とても簡単です。等号に加えて不等号を使用して範囲を結合します。

SELECT
   M.CardNumber,
   M.FirstName,
   M.LastName,
   O.OutletName
FROM
   dbo.Members M
   INNER JOIN dbo.Outlets O
      ON M.CardNumber >= O.StartCardNumber
      AND M.CardNumber <= O.EndCardNumber

これは と同じですが、 とを使用しM.CardNumber BETWEEN O.StartCardNumber AND O.EndCardNumberてスキームの包括的なエンドポイントを引き出したかったのです。非常に多くの場合、終了値が排他的であるために常に適しているとは限りませんが、この場合はそうではありません。>=<=BETWEEN<

オンラインで今すぐお試しください

于 2012-08-21T06:13:53.077 に答える