Это продолжение моего previous question.MySQL UNION SELECT на нескольких столбцах, чтобы найти MAX MAX
Предположим, у нас есть три таблицы. Основной стол и две таблицы идентификаторов.
+-----+-----+--------------------------------------+
| cid | pid | date1 | date2 | date3 |
+-----+-----+--------------------------------------+
| 1 | 2 | NULL | 2014-03-24 | 2014-03-24 |
| 3 | 1 | 2014-06-13 | NULL | NULL |
| 4 | 3 | NULL | 2014-09-14 | NULL |
| 2 | 1 | NULL | NULL | 2014-08-15 |
| 4 | 3 | 2014-01-10 | NULL | NULL |
| 1 | 4 | 2014-02-15 | NULL | NULL |
| 4 | 2 | NULL | 2014-01-06 | 2014-01-12 |
+-----+-----+------------+------------+------------+
+----+----------+ +----+--------+
| id | city | | id | person |
+----+----------+ +----+--------+
| 1 | 'Dallas' | | 1 | 'John' |
| 2 | 'Berlin' | | 2 | 'Jack' |
| 3 | 'Topeka' | | 3 | 'Doug' |
| 4 | 'London' | | 4 | 'Pete' |
+----+----------+ +----+--------+
Хорошо, теперь я хотел бы сделать выбор, чтобы получить один ряд за город в результате. Строка должна содержать город, максимум каждой даты (date1, date2, date3) этого города и человека, который принадлежит к max из трех максимальных. Результат:
+--------+--------+--------------------------------------+
| city | person | date1 | date2 | date3 |
+--------+--------+--------------------------------------+
| Dallas | Jack | 2014-02-15 | 2014-03-24 | 2014-03-24 |
| Berlin | John | NULL | NULL | 2014-08-15 |
| Topeka | John | 2014-06-13 | NULL | NULL |
| London | Doug | 2014-01-10 | 2014-09-14 | 2014-01-12 |
+--------+--------+------------+------------+------------+
Mhh ... Я думал, что это не будет так сложно.
Почему существуют 3 даты? – Strawberry
Как вы получите 2014-03-24 в date2 для Далласа в ожидаемом вами результате, когда все строки для Dallas (cid = 1) в основной таблице имеют NULL в date2? –
@ Ханс: ты прав. Извините, закончите неправильную основную таблицу. Скопируйте и вставьте ошибку. Я исправлю это ... – MaggusK