kwerenda jeden-do-wielu wybierająca wszystkich rodziców i jedno najwyższe dziecko każdego rodzica
Istnieją dwie tabele SQL:
Parents:
+--+---------+
|id| text |
+--+---------+
| 1| Blah |
| 2| Blah2 |
| 3| Blah3 |
+--+---------+
Childs
+--+------+-------+
|id|parent|feature|
+--+------+-------+
| 1| 1 | 123 |
| 2| 1 | 35 |
| 3| 2 | 15 |
+--+------+-------+
Chcę wybrać jednym zapytaniem każdy wiersz z tabeli Rodzice i dla każdego pojedynczego wiersza z tabeli Childs z relacją „rodzic” - wartość „id” i największą wartość kolumny „cecha”. W tym przykładzie wynik powinien być:
+----+------+----+--------+---------+
|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 |
+----+------+----+--------+---------+
Gdzie p = tabela nadrzędna c = tabela podrzędna
Próbowałem LEFT OUTER JOIN i GROUP BY, ale MSSQL Express powiedział mi, że zapytanie z GROUP BY wymaga funkcji agregacji na wszystkich polach nie zgrupowanych. I nie chcę grupować ich wszystkich, ale raczej wybrać górny wiersz (z niestandardowym zamówieniem).
Nie mam pomysłów ...