Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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
Php 在mysql中应用连接后,如何获取字段为null或空的所有列_Php_Mysql_Sql - Fatal编程技术网

Php 在mysql中应用连接后,如何获取字段为null或空的所有列

Php 在mysql中应用连接后,如何获取字段为null或空的所有列,php,mysql,sql,Php,Mysql,Sql,我的第一个表结构和数据如下(容差): 第二个表的结构和数据如下(保存员工津贴): 我想要这样: ---------------------------------------------- |Sno | EmpID | allowanceName| amount | ----------------------------------------------| |1 | EM-1001 | HRA | 1200 | -----------

我的第一个表结构和数据如下(容差):

第二个表的结构和数据如下(保存员工津贴):

我想要这样:

----------------------------------------------
|Sno   |   EmpID     | allowanceName|  amount |
----------------------------------------------|
|1     |    EM-1001  |     HRA      |  1200   |
----------------------------------------------|
|2     |    EM-1001  |      CA      |  800    |
----------------------------------------------|
|3     |    EM-1001  |     TA       |  NULL   |
----------------------------------------------|
|4     |    EM-1001  |      SA      |  NULL   |
----------------------------------------------|
Select * 
From save_employee_allowance 
LEFT JOIN allowance 
ON allowance.allwnce = save_employee_allowance.allowanceName 
Where EmpID = 'EM-1001'
我正在尝试这样的左连接:

----------------------------------------------
|Sno   |   EmpID     | allowanceName|  amount |
----------------------------------------------|
|1     |    EM-1001  |     HRA      |  1200   |
----------------------------------------------|
|2     |    EM-1001  |      CA      |  800    |
----------------------------------------------|
|3     |    EM-1001  |     TA       |  NULL   |
----------------------------------------------|
|4     |    EM-1001  |      SA      |  NULL   |
----------------------------------------------|
Select * 
From save_employee_allowance 
LEFT JOIN allowance 
ON allowance.allwnce = save_employee_allowance.allowanceName 
Where EmpID = 'EM-1001'

但它只给出匹配津贴名称的结果

如果您想要
津贴
中的所有行,则将其作为
左联接中的第一个表。此外,您还需要将
WHERE
条件移动到
ON
子句:

Select a.Sno, coalesce(em.EmpID, 'EM-1001') as EmpId, a.allowanceName, ea.amount
From allowance a LEFT JOIN
     save_employee_allowance ea
     ON a.allwnce = ea.allowanceName and ea.EmpID = 'EM-1001';

如果希望
余量中的所有行
,则将其作为
左联接中的第一个表
。此外,您还需要将
WHERE
条件移动到
ON
子句:

Select a.Sno, coalesce(em.EmpID, 'EM-1001') as EmpId, a.allowanceName, ea.amount
From allowance a LEFT JOIN
     save_employee_allowance ea
     ON a.allwnce = ea.allowanceName and ea.EmpID = 'EM-1001';

您好,您必须将津贴放在左侧,因为
left JOIN
关键字返回左表中的所有行
(津贴)
,右表中的匹配行
(保存员工津贴)。
如果没有匹配项,则右侧的结果为空

select *
From allowance a LEFT JOIN
     save_employee_allowance ea
     ON a.allwnce = ea.allowanceName where ea.EmpID = 'EM-1001';

您好,您必须将津贴放在左侧,因为
left JOIN
关键字返回左表中的所有行
(津贴)
,右表中的匹配行
(保存员工津贴)。
如果没有匹配项,则右侧的结果为空

select *
From allowance a LEFT JOIN
     save_employee_allowance ea
     ON a.allwnce = ea.allowanceName where ea.EmpID = 'EM-1001';

我认为您想要的是不可能的,因为您在save|u employee|u津贴中没有记录für SA,所以您无法获得行| 4 | EM-1001 | SA | NULL |,因为EM-1001来自save|u employee|u allownce使用右连接而不是左连接join@Jens你说得对,但如果我不明白,我能应付。谢谢,我认为你想要的是不可能的,因为你在储蓄员工津贴中没有记录,所以你不能得到行| 4 | EM-1001 | SA | NULL |,因为EM-1001来自储蓄员工津贴使用右连接而不是左连接join@Jens你说得对,但如果我不明白,我能应付。感谢您无需将条件移至ON条款。事实上,它会产生不理想的结果。我认为它不会得到预期的结果,因为在
中,余量
是没有值的
EM-1001
,这在output@Jens . . . 很好的观察。这只需要对此查询进行简单的调整。不需要将条件移动到ON子句。事实上,它会产生不理想的结果。我认为它不会得到预期的结果,因为在
中,余量
是没有值的
EM-1001
,这在output@Jens . . . 很好的观察。这只需要对此查询进行简单的调整。