mysql使用一对多外键引用从多个表中获取数据
嗨,我必须写一个mysql查询,我将解释我想如何处理这个查询 我有两张桌子 A 表Bmysql使用一对多外键引用从多个表中获取数据,mysql,Mysql,嗨,我必须写一个mysql查询,我将解释我想如何处理这个查询 我有两张桌子 A 表B CREATE TABLE IF NOT EXISTS `estimate_resource_mth` ( `field1` int(10) NOT NULL AUTO_INCREMENT, `field2` int(10) NOT NULL, `field3` int(10) NOT NULL, `field4` int(10) NOT NULL, PRIMARY KEY (`field1`
CREATE TABLE IF NOT EXISTS `estimate_resource_mth` (
`field1` int(10) NOT NULL AUTO_INCREMENT,
`field2` int(10) NOT NULL,
`field3` int(10) NOT NULL,
`field4` int(10) NOT NULL,
PRIMARY KEY (`field1`) ;
从
tableA
到tableB
有一对多引用,即A.field1
对B.table2
的多引用。现在我将解释我需要得到什么,我有一个id,它使用where条件从表A
中获取数据,我需要返回这个列表以及表B中filed4
的总和(表B中的字段2引用表A,它可能是多行一对多关系)。我怎么能在一次查询中得到一个关于这个数据的答案。你的描述很差,你的通用列名也没有多大帮助,但如果我理解的话,tableB.field2
引用了tableA.field1
。在这种情况下,在tableB.field4
上使用聚合SUM()
的左联接将完成此任务
SELECT
tableA.field1,
SUM(tableB.field4) AS the_sum
FROM
tableA
LEFT JOIN tableB ON tableA.field1 = tableB.field2
WHERE
/* IN() for multiple possible vals. Use = if only 1 val needed
and then the GROUP BY is unnecessary */
tableA.field1 IN ('val1','val2',val3')
GROUP BY tableA.field1
SELECT
tableA.field1,
SUM(tableB.field4) AS the_sum
FROM
tableA
LEFT JOIN tableB ON tableA.field1 = tableB.field2
WHERE
/* IN() for multiple possible vals. Use = if only 1 val needed
and then the GROUP BY is unnecessary */
tableA.field1 IN ('val1','val2',val3')
GROUP BY tableA.field1