您好我必须写一个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`) ;
从tableA
到tableB
的一对多引用A.field1
多次引用B.table2
。现在我将解释我需要得到什么,我有一个id从表A
获取数据使用where条件我需要返回此列表,其中tableB中的filed4
之和(tableB参考中的field2)到tableA,它可能是多行的一对多关系)。我怎么能在一个查询中得到这个数据。
答案 0 :(得分:1)
您的描述很差,而且您的通用列名称不是很有用,但如果我理解,tableB.field2
引用tableA.field1
。在这种情况下,LEFT JOIN
上SUM()
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