我正在尝试做一些我经常看到的事情,但是我很难找到最好的方法。
我有以下查询:
"SELECT * FROM Property_Info INNER JOIN RateInfo ON Property_Info.PropertyID=RateInfo.RateID"
由此,我执行以下foreach循环以显示我的所有属性。
foreach(var row in queryResults){
<div class="row">
<h4>@row.PropertyName</h4>
<h5>Prices from: xxxx</h5>
</div>
}
我遇到的问题是,我需要在连接表(RateInfo)上执行“SELECT TOP 1”以显示每个属性的最低价格。我需要在foreach循环中显示这个,我放了xxxx
我是否需要编写单独的SQL查询?如果是这样,我如何将它绑定到foreach循环中的相应条目。
表格信息:
Property_Info表 - 物业ID, 的PropertyName
RateInfo表 - PropertyID(这与其他表中的PropertyID匹配), RateID, RateName, RateValue
答案 0 :(得分:1)
在不知道表结构的情况下,它有点困难,但我假设RateInfo是每行的唯一ID。情况就是这样:
SELECT * FROM Property_Info pi
cross JOIN RateInfo ri
where ri.RateId = (select max(ri2.RateId) from RateInfo ri2 where ri2.RateId = pi.PropertyId)
...或者代替你可以使用的最大值(ri2.Id):
select top 1 ri2.RateId from RateInfo ri2...
干杯 -
SELECT * FROM Property_Info pi 交叉加入RateInfo ri 其中ri.Id =(从RateInfo ri2中选择max(ri2.Id),其中ri2.RateId = pi.PropertyId)
注意 ri.Id =(选择max(ri2.Id )....这个Id是我假设存在于RateInfo上的唯一字段。 道歉..
答案 1 :(得分:1)
SELECT
pi.PropertyID,
pi.PropertyName,
MIN(ri.Rate) AS LowestRate,
MAX(ri.Rate) AS HighestRate
FROM
Property_Info pi
INNER JOIN
RateInfo ri ON pi.PropertyID = ri.PropertyID
GROUP BY
pi.PropertyID,
pi.PropertyName
代码中的更改是对表名使用别名,以便更容易再次引用它们并使用GROUP BY
让我们对RateInfo
表中的数据执行聚合函数。希望这就是你需要的东西?