我试图 Select 不同的产品,按除ID外的所有列分组,并为该类型的产品出价最低.有时,可能没有该产品的出价,所以我需要离开加入来说明这些.
我将在下面添加所需的输出,并添加一种伪查询来帮助解释.
如果它有帮助,你可以想象一个产品搜索页面.当用户搜索时,它会将所有相同的产品分组在一起.这些产品可以由许多不同的卖家销售,但我们只想在搜索结果中显示一次,以及搜索时该产品的最便宜价格.
Data I want returned个
SELECT count(Name), Size, Weight, Color, BidID, Status, min(Price)
-- joins go here --
-- group by Size, Weight, Color, BidID, Status
还需要WHERE子句,这些子句基于最终用户使用的筛选器构建.例如:
WHERE Status = 'Active' and Weight = '1kg'
WHERE Status = 'Active'
WHERE Size = '1m' and Weight in ('1kg', '2kg')
Products Table个
| ProductID (PK) | Name | Size | Weight | Color |
| -------- | -------- | -----| ----- | ----- |
| 1 | Black Table | 1m | 2kg | Black |
| 2 | Purple Table| 1m | 3kg | Purple |
| 3 | Small Table | 1m | 3kg | Black |
| 4 | Small Table | 1m | 3kg | Black |
| 5 | Black Table | 1m | 2kg | Black |
| 6 | Purple Table| 1m | 3kg | Purple |
| 7 | Small Table | 1m | 3kg | Black |
| 8 | Small Table | 1m | 3kg | Black |
Bids Table个
| BidID (PK) | ProductID | Status | Price |
| -------- | ------- | -------- | ----- |
| 1 | 1 | Active | 123.5 |
| 2 | 1 | Active | 325.99 |
| 3 | 1 | Active | 85.99 |
| 4 | 3 | Cancelled | 315.99 |
| 5 | 4 | Active | 113.5 |
| 6 | 3 | Cancelled | 305.99 |
| 7 | 1 | Active | 82.99 |
| 8 | 2 | Active | 345.99 |
DESIRED OUTPUT EXAMPLE个
| Count | Name | Size | Weight | Color | BidID |CheapestPrice |
| -------- | -------- | -----| ----- | ----- | ----- | ----- |
| 38 | Black Table | 1m | 2kg | Black | 1 | 123.5
| 21 | Purple Table| 1m | 3kg | Purple | 2 | 89.95
| 13 | Small Table | 1m | 3kg | Black | 3 | 65.94