запрос «один ко многим», выбирающий всех родителей и одного старшего ребенка для каждого родителя
Есть две таблицы SQL:
Parents:
+--+---------+
|id| text |
+--+---------+
| 1| Blah |
| 2| Blah2 |
| 3| Blah3 |
+--+---------+
Childs
+--+------+-------+
|id|parent|feature|
+--+------+-------+
| 1| 1 | 123 |
| 2| 1 | 35 |
| 3| 2 | 15 |
+--+------+-------+
Я хочу выбрать одним запросом каждую строку из таблицы Parents и для каждой отдельной строки из таблицы Childs с отношением «родитель» - значение «id» и наибольшим значением столбца «feature». В этом примере результат должен быть:
+----+------+----+--------+---------+
|p.id|p.text|c.id|c.parent|c.feature|
+----+------+----+--------+---------+
| 1 | Blah | 1 | 1 | 123 |
| 2 | Blah2| 3 | 2 | 15 |
| 3 | Blah3|null| null | null |
+----+------+----+--------+---------+
Где p = родительская таблица и c = дочерняя таблица
Я пытался УДАЛИТЬ ВНЕШНЕЕ СОЕДИНЕНИЕ и ГРУППА BY, но MSSQL Express сказал мне, что для запроса с GROUP BY требуются функции Aggregate для всех не сгруппированных полей. И я не хочу группировать их все, а выбрать верхний ряд (с пользовательским порядком).
У меня совершенно нет идей ...