2つのSQLのテーブルがあります。1対多の各親のためのすべての親とシングルトップ子を選択するクエリ
Parents:
+--+---------+
|id| text |
+--+---------+
| 1| Blah |
| 2| Blah2 |
| 3| Blah3 |
+--+---------+
Childs
+--+------+-------+
|id|parent|feature|
+--+------+-------+
| 1| 1 | 123 |
| 2| 1 | 35 |
| 3| 2 | 15 |
+--+------+-------+
私は、単一のクエリを持つ親テーブルからすべての行を選択したい
とそれぞれ1つの行については、リレーション「親」 - 「id」値と最大「フィーチャ」列の値を持つチャイルドテーブルから取得します。私はJOINをLEFT OUTERしようとした
+----+------+----+--------+---------+
|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 =子テーブル
とGROUP BYが、MSSQL Expressは、GROUP BYでそのクエリが集約関数を必要と私に言った:この例では、結果がでなければなりませんGroupped以外のすべてのフィールドに表示されます。そして、私はそれらをすべてグループ化するのではなく、一番上の行を(カスタム注文で)選択します。私は完全にアイデアをしています
...
毎回最高の子を返しません。 –
ありがとうございました。修正されました。 – manji
それは働いている!素晴らしい! – PiotrK