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

时间:2012-07-08 12:10:14

标签: mysql

您好我必须写一个mysql查询我将解释查询我想如何工作。

我有两张桌子

A

  

CREATE TABLE IF NOT NOT EXISTS A

     

field1 int(10)NOT NULL AUTO_INCREMENT,

     

field2 int(10)NOT NULL,

     

field3 int(10)NOT NULL,

     

field4 varchar(255)DEFAULT NULL,

     

fields5 int(10)NOT NULL,

     

field6 varchar(255)NOT NULL,

     

field7 varchar(255)NOT NULL,

     

field8 int(10)NOT NULL,

     

field9 tinyint(1)NOT NULL COMMENT'1 =启用资源0 = for   禁用资源',

     

PRIMARY KEY(field1);

表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`) ;

tableAtableB的一对多引用A.field1多次引用B.table2。现在我将解释我需要得到什么,我有一个id从表A获取数据使用where条件我需要返回此列表,其中tableB中的filed4之和(tableB参考中的field2)到tableA,它可能是多行的一对多关系)。我怎么能在一个查询中得到这个数据。

1 个答案:

答案 0 :(得分:1)

您的描述很差,而且您的通用列名称不是很有用,但如果我理解,tableB.field2引用tableA.field1。在这种情况下,LEFT JOINSUM() tableB.field4的{​​{1}}就可以完成这项工作。

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