基本的に私は1対多のテーブルを持っています。大きい方のテーブルの列を小さい方のテーブルの結果セットに追加したいと思います。結果セットは小さいテーブルと同じサイズになりますが、ここでも、多面テーブルからの関連情報が含まれます。
1つの落とし穴:複合キーを確立することはできますが、多面テーブルには主キーが定義されていません(ここでも制約として存在しません)。
基本的に私は1対多のテーブルを持っています。大きい方のテーブルの列を小さい方のテーブルの結果セットに追加したいと思います。結果セットは小さいテーブルと同じサイズになりますが、ここでも、多面テーブルからの関連情報が含まれます。
1つの落とし穴:複合キーを確立することはできますが、多面テーブルには主キーが定義されていません(ここでも制約として存在しません)。
の複数のレコードがt_large
のレコードに対応している可能性がt_small
あるため、から選択するものを正確に選択する必要がありますt_large
。
これは、対応するすべてのレコードを(どのように?)から集約するt_large
か、多数の中から1つのレコードを選択する(どの?)必要があることを意味します。
SELECT s.*, SUM(l.value)
FROM t_small s
LEFT JOIN
t_large l
ON s.id = l.small
また
SELECT s.*, l.*
FROM t_small s
LEFT JOIN
t_large l
ON l.id =
(
SELECT MIN(id)
FROM t_large li
WHERE li.small = s.id
)
ここで、このテーブルレイアウトを想像してください。
t_small
id value
-- --
1 Small 1
2 Small 2
t_large
id small_id value
-- -- --
1 1 1
2 1 4
3 2 9
4 2 16
クエリの結果として表示したい結果セットを投稿していただけますか?
これはキーの左結合だけではありませんか?
select * from small_table s left join large_table l on s.id = l.small_table_id
small_tableのすべてのレコード。ただし、large_tableの関連する行のみ。
何かが足りません。スクラブされたサンプルデータを詳しく説明するか、提供してください。