-1

嗨,我必须编写一个 mysql 查询,我将解释该查询我想如何工作。

我有两张桌子

一种

CREATE TABLE IF 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=for enabled resource 0= for
disabled resource',
  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`) ;

tableA从to有一对多的引用,tableB即对 的A.field1多重引用B.table2。现在我将解释我需要得到什么,我有一个 id,它A使用 where 条件从表filed4中提取数据到许多关系)。我怎么能在一个查询中得到这个数据。

4

1 回答 1

1

您的描述很差,您的通用列名也不是很有帮助,但如果我理解,请tableB.field2参考tableA.field1. 在这种情况下,LEFT JOIN带有聚合SUM()的atableB.field4将完成这项工作。

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
于 2012-07-08T12:19:52.823 回答