数据库结构如下
>
> product 表
> -----------------------------------------------------------------
> productid 商品编号 int
> productname 商品名称 varchar 50
>
> sale 表
> --------------------------------------------------------------------
> saleid 报价记录编号 int
> productid 报价商品编号(与product表关联)int
> seller 报价商店名称 varchar 50
> price 价格 float
>
选出 商品编号,名称 ,最高和最低报价,最高和最低报价商店名称,进行列表
Select a.productid As [商品编号],
a.productname As [商品名称],
b.price As [最低价格],
b.seller As [最低价格店名],
c.price As [最高价格],
c.seller As [最高价格店名]
From product As a
Left Outer Join sale As b
On b.productid=a.productid
And
b.price=(
Select Min(price)
From sale
Where productid=b.productid --这个时候表b还没有创建完整,他现在内部都有哪些列? 现在的b到底是个什么样子呢?
)
Left Outer Join sale As c
On c.productid=a.productid
And
c.price=(
Select Max(price)
From sale
Where productid=c.productid
)
>
> product 表
> -----------------------------------------------------------------
> productid 商品编号 int
> productname 商品名称 varchar 50
>
> sale 表
> --------------------------------------------------------------------
> saleid 报价记录编号 int
> productid 报价商品编号(与product表关联)int
> seller 报价商店名称 varchar 50
> price 价格 float
>
选出 商品编号,名称 ,最高和最低报价,最高和最低报价商店名称,进行列表
Select a.productid As [商品编号],
a.productname As [商品名称],
b.price As [最低价格],
b.seller As [最低价格店名],
c.price As [最高价格],
c.seller As [最高价格店名]
From product As a
Left Outer Join sale As b
On b.productid=a.productid
And
b.price=(
Select Min(price)
From sale
Where productid=b.productid --这个时候表b还没有创建完整,他现在内部都有哪些列? 现在的b到底是个什么样子呢?
)
Left Outer Join sale As c
On c.productid=a.productid
And
c.price=(
Select Max(price)
From sale
Where productid=c.productid
)
解决方案 »
- 忽然忘了一个很简单的问题?
- 查询的记录的表记录有50万多条,我加了top 500 感谢还是慢,在本地运行还可以,搬到服务器上运行,就 经常出现timeout的现象!
- 在 SQL中怎样查询第几行数据?
- 紧急求助:我应不应该为自己申请一份工资以外的开发费用???
- 多表查询时显示不能显示,大家帮我看看语句那里不对,谢谢!
- 100分求解决办法,不够再加
- 某一列数据类型为INT,怎么样求这一列的和?
- 原创]请问大家我的操作系统是windows2003标准版,为何没法装sql2000数据库(详情)
- 快来帮忙!!!在线等待....
- 求助,sql统计问题,大家帮帮忙!!!!!
- [一个简单的问题]在最后一行加总
- 安装sqlserver 2005后的问题
a.productname As [商品名称],
b.price As [最低价格],
b.seller As [最低价格店名],
c.price As [最高价格],
c.seller As [最高价格店名]
From product As a
Left Outer Join sale As b --product与sale左外连接,给sale取别名b
On b.productid=a.productid --连接条件
And
b.price=(
Select Min(price)
From sale
Where productid=b.productid --这个时候表b还没有创建完整,他现在内部都有哪些列? 现在的b到底是个什么样子呢?
)
Left Outer Join sale As c --在与sale左外连接,给sale取别名c
On c.productid=a.productid
And
c.price=(
Select Max(price)
From sale
Where productid=c.productid
)
也就是说b就是sale,b和sale的结构数据是完全相同的。
Where productid=b.productid的判断条件啊?
Select Min(price)
From sale
Where productid=b.productid --这个时候表b还没有创建完整,他现在内部都有哪些列? 现在的b到底是个什么样子呢?
)是这样的,当为表取一个别名后,也就会把当成另外一张表。productid=b.productid 第一个是sale表的,后面一个是
sale的。求最小值的时候,当然两个表的productid要相同,否则的话就是求整各表的最小值了。
Where productid=b.productid的判断条件啊?
原因是如果不这么写,就不会得到product 表中对应的商品名称了就会不符合查询条件。