mysql使用一对多外键引用从多个表中获取数据

mysql使用一对多外键引用从多个表中获取数据,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`

嗨,我必须写一个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`) ;

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