У меня есть три таблицы:
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 |
+---------+--------+------+------+
Я напечатал это как простой пример того, что мне нужно сделать.
Идентификаторы в таблице не в порядке, как и детали.
Спасибо за любую помощь