【发布时间】:2017-10-05 09:07:09
【问题描述】:
我有多个代表航班数据的表格:
航班:
ID | NMB | DATE
1 | CA1 | 2017-05-26
2 | CA1 | 2017-05-27
3 | CA2 | 2017-05-26
4 | CA2 | 2017-05-27
机场:
ID | NAME
1 | JFK
2 | LAX
航班到达:
ENTITY_ID (flights) | TARGET_ID (airports)
1 | 1
2 | 1
3 | 2
4 | 2
航班价格:
ENTITY_ID (flights) | VALUE
1 | 455
2 | 650
3 | 750
4 | 880
我正在尝试为每个到达机场的每个航班选择最低价格。我想要的是这个:
ID | ARRIVAL | PRICE
1 | 1 | 455
3 | 2 | 750
这是我构造的 SQL 查询,但在 flights_price 上应用的 MIN 函数不仅返回航班的最低价格,而且返回所有条目:
SELECT
f.id AS id,
fa.target_id AS arrival,
MIN(fp.value) AS price
FROM flights_price AS fp
JOIN flights AS f ON fp.entity_id=f.id
JOIN flights_arrival AS fa ON fa.entity_id=f.id
WHERE
fa.target_id IN (1, 2)
GROUP BY
fa.target_id,
fp.value,
f.id;
我做错了什么?我也尝试了子查询,但没有成功。
【问题讨论】:
-
作为一项规则,一组是由一个选择的东西组成的。如果这里对类似问题的十亿左右答案没有帮助,请参阅meta.stackoverflow.com/questions/333952/…
-
这里的
ARRIVAL列属于哪个表列 -
ARRIVAL属于flights_arrival,别名为fa。
标签: mysql sql join group-by min