Mysql 如何使用具有不同记录的联接获取列的和

Mysql 如何使用具有不同记录的联接获取列的和,mysql,Mysql,查看图片并尽快回复我 回复:如何在sql server上获取不同的记录 2015年8月19日发布 第一桌 QuestionID(primaryKey) TargetValue 1 100 2 500 3 200 第二桌 RecordID(primaryKey) Achieved Value QuestionID(foreignkey) 1

查看图片并尽快回复我 回复:如何在sql server上获取不同的记录 2015年8月19日发布 第一桌

QuestionID(primaryKey)   TargetValue
1                         100
2                         500
3                         200
第二桌

RecordID(primaryKey)     Achieved Value  QuestionID(foreignkey)
1                               14           1
2                               14           1
3                               16           2
按照玛纳斯所说的 如果您想获得100,请查找以下查询:

SELECT SUM(Achieved) AS ACHIEVED, [Target]
FROM tabl1
INNER JOIN tabl2 on tabl2.QuestionID=tabl1.QuestionID
group by tabl1.QuestionID, tabl1.Target
1-我想计算目标和已实现目标之和,而不仅仅是目标和已实现目标之和 我想在计算目标和的时候 选择SUMQuestionTarget将取100,无论第二个表中有多少行与问题01相对


如果内部联接产生问题,我也尝试过左外部联接,但它也没有给出所需的结果

您可以尝试下面的查询,即使您的问题不太清楚,如果您没有得到所需的结果,则显示您需要的输出。甚至您也可以创建SQLFIDLE来快速获得解决方案-

select questionid,sum(targetvalue) as target, sum(achivedvalue) as achieved 
from 
(
SELECT distinct tabl1.questionid,tabl1.targetvalue,tabl2.achivedvalue 
FROM table1 as tabl1
LEFT JOIN table2 as tabl2 ON tabl2.questionid=tabl1.questionid
) a 
group by questionid;

您可以在sqlfiddle中检查输出:

您至少需要用这样一个措辞拙劣的问题来显示预期的输出。同意,很难理解您想要做什么…我的输出为第二个表的每条记录添加目标值,就像我得到问题1的目标值之和=200,需要为100,它是200,因为在第二个表中,我有两行,与问题1相对,MAXTargetValue有效?请澄清您的具体问题或添加其他详细信息,以突出显示您所需的内容。正如目前所写的,很难准确地说出你在问什么。请参阅帮助页面以澄清此问题。您正在计算TargetValue我需要一些TargetValue问题是,当我要计算问题id=1的target之和时,它给出200,这必须是100,它给出200,因为第二个表有两行与问题id=1相对的行。根据您的共享数据,每个表将有一个TargetValuequestionid,如果你需要其他东西,那么分享你需要的输出。是的,一个问题id会有一个单一的目标值,我希望你的查询给出200作为需要100的目标的总和,我得到200,因为第二个表有两个questionid=1的记录。这是一个伪造键,将两个记录的目标值设为100+100表示您需要将问题ID 1的目标值设为200。是否正确。请尝试修改查询。