WebMatrix - 内部连接和Foreach循环

时间:2013-12-17 16:39:51

标签: c# sql razor foreach webmatrix

我正在尝试做一些我经常看到的事情,但是我很难找到最好的方法。

我有以下查询:

"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

2 个答案:

答案 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表中的数据执行聚合函数。希望这就是你需要的东西?