SQL连接有2个表 - 在第二个连接的列上排序不同的结果

时间:2018-03-21 14:57:32

标签: mysql sql join sql-order-by

对不好的标题感到抱歉,但我不知道如何更好地描述它。

我有3张桌子

1。)比赛

ID   Title
----------
1    Contest 1
2    Contest 2
3    Contest 3

2。)contest_series

ID   contest_id   series_id
----------------------------
1    1            3
2    1            2
3    2            1
4    2            2
5    3            3

3。)系列

ID   start_date
----------------
1    2018-03-21 14:00:00
2    2018-03-21 15:00:00
3    2018-03-21 16:00:00

现在我试图实现的是,获得比赛中第一个首发系列的start_date排序的比赛列表。

通缉结果:

contest_id   start_date_of_first_series
------------------------
2            2018-03-21 14:00:00
1            2018-03-21 15:00:00
3            2018-03-21 16:00:00

重要提示:结果中的contest_id需要与众不同。

2 个答案:

答案 0 :(得分:2)

我认为这只是joingroup by

select cs.contest_id, min(s.start_date) as first_start_date
from contest_series cs join
     series s
     on cs.series_id = s.series_id
group by cs.contest_id
order by first_start_date;

答案 1 :(得分:0)

我略微修改了它,但是@Gordon Linoff引导我朝着正确的方向解决了我的问题:

select contests.* from contests
join (
    select contest_series.contest_id, min(series.start) as first_start_date
    from contest_series
    join series on contest_series.series_id = series.id
    group by contest_series.contest_id
    ) filtered_contests on filtered_contests.contest_id = contests.id
order by first_start_date