2

基本的に私は1対多のテーブルを持っています。大きい方のテーブルの列を小さい方のテーブルの結果セットに追加したいと思います。結果セットは小さいテーブルと同じサイズになりますが、ここでも、多面テーブルからの関連情報が含まれます。

1つの落とし穴:複合キーを確立することはできますが、多面テーブルには主キーが定義されていません(ここでも制約として存在しません)。

4

2 に答える 2

2

の複数のレコードが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

クエリの結果として表示したい結果セットを投稿していただけますか?

于 2010-02-18T16:54:17.503 に答える
0

これはキーの左結合だけではありませんか?

select * from small_table s left join large_table l on s.id = l.small_table_id

small_tableのすべてのレコード。ただし、large_tableの関連する行のみ。

何かが足りません。スクラブされたサンプルデータを詳しく説明するか、提供してください。

于 2010-02-18T16:45:46.680 に答える