0

我有两张桌子叫ListingListingProperties

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 在当前和固定之间进行选择。Tis 假设您在列表中为您要列出的每个项目至少有一条记录。如果你没有至少一个,你将不得不做一些其他的技巧。

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 回答