Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询联合_Sql - Fatal编程技术网

SQL查询联合

SQL查询联合,sql,Sql,我有这个疑问 SELECT e.ename, SUM(md.prices) AS TotalSales FROM Employee2 e inner join MakesD2 md on md.eid=e.eid GROUP BY e.ename UNION ALL SELECT e.ename FROM Employee2 e left join MakesD2 md on md.eid=e.eid WHERE md.eid is NULL; 但我一直在犯这个错误。有什么办法可以解决吗?一个

我有这个疑问

SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e inner join MakesD2 md on md.eid=e.eid
GROUP BY e.ename
UNION ALL
SELECT e.ename
FROM Employee2 e left join MakesD2 md on md.eid=e.eid
WHERE md.eid is NULL;
但我一直在犯这个错误。有什么办法可以解决吗?

一个联合必须对所有子查询具有相同的列。因此,添加第二列:

SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e inner join MakesD2 md on md.eid=e.eid
GROUP BY e.ename
UNION ALL
SELECT e.ename, NULL
FROM Employee2 e left join MakesD2 md on md.eid=e.eid
WHERE md.eid is NULL;
您的查询可能不需要全部联合。这可能是您想要的:

SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e left join
     MakesD2 md
    on md.eid = e.eid
GROUP BY e.ename;
但是,这更接近原始名称,因为名称可以在查询中多次出现:

SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e left join
     MakesD2 md
    on md.eid = e.eid
GROUP BY e.ename, (CASE WHEN md.eid IS NULL THEN 1 ELSE 2 END);
此版本仅包含一次名称,即使给定名称的Employee2中有多行与MakesD2不匹配

列数显示在相应的SELECT语句中 必须平等。 列将显示在每个选择项的相应位置 语句必须具有相同的数据类型,或者至少具有可转换的数据 类型 你可以像下面这样做

SELECT e.ename, SUM(md.prices) AS TotalSales
FROM Employee2 e inner join MakesD2 md on md.eid=e.eid
GROUP BY e.ename
UNION ALL
SELECT e.ename, 0 As  TotalSales
FROM Employee2 e left join MakesD2 md on md.eid=e.eid
WHERE md.eid is NULL;

请尝试以下查询:

    SELECT e.eid, e.ename, COALESCE(SUM(md.prices), 0) AS TotalSales
    FROM Employee2 e 
    LEFT JOIN MakesD2 md
    ON md.eid = e.eid
    GROUP BY e.eid, e.ename
    ORDER BY e.ename, e.eid

我一直认为这个错误是完全没有意义的,除非你也包括这个错误是什么。它就在你面前的屏幕上,但我们坐在那里看不到它。你要求我们免费帮助你解决问题;您至少应该向我们提供您现有的信息,以便我们使用。谢谢。另外,我有两个相同的emp名称,但他们是两个不同的人,具有不同的ID。我如何显示这两个名字。@Natheeshsselvan我将答案改为说明两个同名的人。