0

と呼ばれる2つのテーブルがListingありますListingProperties

Listing (ID, CurrentPrice)          
ListingProperties (id, listingId, Fixedprice)

問題は、すべてのリストを で注文したいということですFixedprice。ただし、一部のリストにはFixedprice.

その場合は、現在の価格を確認し、他社と比較してFixedpriceから注文したいです。

上場

id name currentprice
1  a      10
2  b       50
3  c       40

リスト プロパティ

id listingId  Fixedprice
1       1        20
2       3        30

注文後、必要な注文は

name
a
c
b 
4

2 に答える 2

1

これを試して:

SELECT Name
FROM Listing l
LEFT JOIN ListingProperties lp ON l.id=lp.listingid
ORDER BY ISNULL(lp.FixedPrice, l.currentprice)
于 2012-08-16T13:00:42.270 に答える
0

あなたの質問は明確ではありませんが、推測してみます。

1) テーブルを結合する必要があります。

SELECT <fields here>
FROM Listing L
LEFT JOIN ListingProperties LP
ON L.ID = LP.ListingId

このクエリは、ListingProperties の ListingId に REPEATED VALUES がないことを前提としています。複数の値がある場合は、表示する FixedPrice を決定する優先基準を指定する必要があります。

2) 結合されたクエリを取得したら、CASE statetemnt を使用して、現在と固定の間で選択する必要があります。これは、リストするすべてのアイテムについて、リストに少なくとも 1 つのレコードがあることを前提としています。少なくとも 1 つ持っていない場合は、さらにいくつかのトリックを実行する必要があります。

SELECT CASE WHEN L.CurrentPrice IS NULL THEN LP.FicedPrice ELSE L.CurrentPrice END 
FROM Listing L
LEFT JOIN ListingProperties LP
ON L.ID = LP.ListingId
ORDER BY CASE WHEN L.CurrentPrice IS NULL THEN LP.FicedPrice ELSE L.CurrentPrice END 
于 2012-08-16T13:03:49.630 に答える