我看过这里:使用 MAX 和 GROUP BY以及 SO 上的类似页面选择所有相应的字段,但我似乎无法让我的所有字段正确排列。
我觉得我正处于弄清楚这一点的风口浪尖,但也许我走错了路,需要以不同的方式看待这个问题。
我想要的是合并标志设置为 1 的每个卧室数量每个属性名称租金最低的单元。
我的 SQL 小提琴:http ://sqlfiddle.com/#!2/881c41/2
上面的图像是通过这个查询获得的:
SELECT ru.id, run.name, ru.rent, ru.bedrooms
FROM rental_units AS ru
JOIN rental_unit_names AS run
on run.id = ru.name_id
WHERE run.merge = 1
ORDER BY run.name ASC, ru.bedrooms ASC, ru.rent ASC
上图是这个查询的结果:
SELECT ru.id, run.name, ru.rent, MIN(ru.rent) AS min_rent, ru.bedrooms
FROM rental_units AS ru
JOIN rental_unit_names AS run
on run.id = ru.name_id
WHERE run.merge = 1
GROUP BY ru.name_id, ru.bedrooms
ORDER BY run.name ASC, ru.bedrooms ASC, ru.rent ASC, ru.id ASC
在大多数情况下,在您查看第 4 行之前,一切看起来都很好。租金值不对齐,id
应该是6而不是5。
下图是我想要的结果。
:: 编辑 1 ::
我是否需要创建一个包含 2 列的链接表,其中一列中包含出租单元 ID,另一列中包含出租单元名称 ID?或者至少以某种方式将其作为派生表?