2

基本上我有一个一对多的表。我想将较大表的列附加到较小表的结果集中。我最终会得到一个与小表相同大小的结果集,但同样,它会包含来自多面表的相关信息。

一个问题:多面表没有定义主键,尽管可以建立一个复合键(同样它不是约束)。

4

2 回答 2

2

由于多个记录 int_large可能对应于一个记录 in t_small,因此您需要选择您想要从中挑选的确切内容t_large

这意味着您要么需要从t_large(如何?)聚合所有相应的记录,要么从许多记录中选择一条记录(哪个?)。

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 回答