mysql выберите минимальный и максимальный год для последовательной группы по - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть три таблицы:

Bike
+----+--------+---------+------+
| id | make   | model   | year |
+----+--------+---------+------+
| 1  | make-z | model-1 | 2010 |
+----+--------+---------+------+
| 2  | make-z | model-1 | 2011 |
+----+--------+---------+------+
| 3  | make-z | model-1 | 2012 |
+----+--------+---------+------+
| 4  | make-z | model-1 | 2013 |
+----+--------+---------+------+
| 5  | make-z | model-1 | 2014 |
+----+--------+---------+------+


Part
+--------+-------+-------+----------+
| id     | name  | price | category |
+--------+-------+-------+----------+
| part-A | spg-A | 10.00 | Spring   |
+--------+-------+-------+----------+
| part-B | spg-B | 12.00 | Spring   |
+--------+-------+-------+----------+

Link
+--------+--------+
| bikeID | partID |
+--------+--------+
| 1      | part-A |
+--------+--------+
| 2      | part-A |
+--------+--------+
| 3      | part-A |
+--------+--------+
| 4      | part-B |
+--------+--------+
| 5      | part-A |
+--------+--------+

Мне нужно построить диаграмму приложения, которая показывает, какие детали подходят к какому велосипеду.

У меня проблема в том, что:

модель-1 года 2010 - 2012 и 2014 гг. использует part-A

модель-1 года 2013 использует part-B

Так что мин и макс пропускают тот факт, что 2013 не включен.

Мне нужно получить минимальное и максимальное значения только для последовательных лет.

SELECT *, MIN(year) AS syear, MAX(year) AS eyear 
FROM bike
LEFT JOIN link ON bike.id = link.bikeID
LEFT JOIN part ON link.partID = part.id 
WHERE part.category = 'spring'
GROUP BY make, model, part.id
ORDER BY make, model, year

Вывод, который я получаю:

+---------+--------+------+------+
| model-1 | part-A | 2010 | 2014 |
+---------+--------+------+------+
| model-1 | part-B | 2013 | 2013 |
+---------+--------+------+------+

Как это должно выглядеть:

+---------+--------+------+------+
| model-1 | part-A | 2010 | 2012 |
+---------+--------+------+------+
| model-1 | part-B | 2013 | 2013 |
+---------+--------+------+------+
| model-1 | part-A | 2014 | 2014 |
+---------+--------+------+------+

Я напечатал это как простой пример того, что мне нужно сделать.

Идентификаторы в таблице не в порядке, как и детали.

Спасибо за любую помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...