Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
Mysql 如何使这个查询正确?_Mysql_Sql - Fatal编程技术网

Mysql 如何使这个查询正确?

Mysql 如何使这个查询正确?,mysql,sql,Mysql,Sql,这是我的第一张桌子 Type LimitDays ----------------- leave 15 absent 15 vacation 15 这是我的第二张桌子 Name type UseDays --------------------------- Chuck leave 3 现在我想把这两个表连接起来。。然后像这样展示 Type LimitDays UseDays -----

这是我的第一张桌子

Type      LimitDays
-----------------
leave        15
absent       15
vacation     15
这是我的第二张桌子

Name      type      UseDays
---------------------------
Chuck     leave         3
现在我想把这两个表连接起来。。然后像这样展示

Type       LimitDays    UseDays
--------------------------------
leave         15          3
absent        15          0
vacation      15          0
这是我已经做过的。。但是

SELECT   
    Leave,
    Counter,
    (SELECT SUM(LeaveTbl.NumDays) AS Expr1
     FROM  LeavetypTbl 
     INNER JOIN LeaveTbl ON  LeavetypTbl.Leave = LeaveTbl.Leave
     GROUP BY LeavetypTbl.Leave, LeavetypTbl.Counter) AS Expr1
FROM     
    LeavetypTbl AS LeavetypTbl_1
结果是错误的。哈哈,还是不能正确。结果是这样的

Type       LimitDays    UseDays
--------------------------------
leave         15          3
absent        15          3
vacation      15          3

我的回答假设您使用的是SQL Server。尝试使用以下查询:

SELECT t1.Type, t1.LimitDays, COALESCE(t2.UseDays, 0) as UseDays
FROM table1 t1 LEFT JOIN table2 t2 ON t1.type = t2.type
有两个关键部分。首先是使用
左连接
,因为并非所有记录都存在于表2中。第二,如果左连接的右侧不存在值,则使用
COALESCE
显示0,而不是
NULL

这适用于您提供的数据,但如果其中一个表中有更多记录,则可能需要使用筛选或分组。

如果您使用的是MySQL:

SELECT LeavetypTbl.Leave, LeavetypTbl.Counter, IFNULL(SUM(LeaveTbl.NumDays), 0)
FROM LeavetypTbl LEFT JOIN LeaveTbl ON LeavetypTbl.Leave = LeaveTbl.Leave
GROUP BY LeavetypTbl.Leave

伊玛,试试那个……tnx巴德!你在用什么?我在用MsSQL,先生。。