Eins-zu-Viele-Abfrage, bei der alle Eltern und jedes übergeordnete Kind für jedes Elternteil ausgewählt werden

Es gibt zwei SQL-Tabellen:

Parents:
+--+---------+
|id|   text  |
+--+---------+
| 1|  Blah   |
| 2|  Blah2  |
| 3|  Blah3  |
+--+---------+

Childs
+--+------+-------+
|id|parent|feature|
+--+------+-------+
| 1|   1  |  123  |
| 2|   1  |   35  |
| 3|   2  |   15  |
+--+------+-------+

Ich möchte mit einer einzelnen Abfrage jede Zeile aus der Elterntabelle und für jede einzelne Zeile aus der Kindertabelle mit der Beziehung "Eltern" - "ID" -Wert und dem größten "Merkmal" -Spaltenwert auswählen. In diesem Beispiel sollte das Ergebnis sein:

+----+------+----+--------+---------+
|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  |
+----+------+----+--------+---------+

Wobei p = übergeordnete Tabelle und c = untergeordnete Tabelle

Ich habe versucht, OUTER JOIN und GROUP BY nach links zu verschieben, aber MSSQL Express hat mir mitgeteilt, dass für Abfragen mit GROUP BY Aggregatfunktionen für alle nicht gruppierten Felder erforderlich sind. Und ich möchte sie nicht alle gruppieren, sondern die oberste Reihe auswählen (mit benutzerdefinierter Bestellung).

Mir fehlen die Ideen ...

Antworten auf die Frage(5)

Ihre Antwort auf die Frage