Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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,我刚开始一些编程类,我正在编写CRUD操作来获取一些数据。每当下面的子查询从合同表返回最大结束日期时,它都应该返回与3个不同表中的所有关系匹配的日期。看起来子查询正在忽略where子句。我在子查询方面没有太多经验,看起来我犯了一些错误,请帮助。伙计们,我快做完了,现在我需要弄清楚如何在子查询中使用max函数,类似这样的。。。。如果要根据3个不同表中的关系获取值,请使用JOIN select distinct emp.FIRST_NAME from

我刚开始一些编程类,我正在编写CRUD操作来获取一些数据。每当下面的子查询从合同表返回最大结束日期时,它都应该返回与3个不同表中的所有关系匹配的日期。看起来子查询正在忽略where子句。我在子查询方面没有太多经验,看起来我犯了一些错误,请帮助。伙计们,我快做完了,现在我需要弄清楚如何在子查询中使用max函数,类似这样的。。。。如果要根据3个不同表中的关系获取值,请使用JOIN

        select distinct emp.FIRST_NAME from
                            (                                     
                            SELECT FIRST_NAME, max(DT_START) as DT_START
                            FROM   employee 
                            WHERE  ID_EMP = 1 
                            group by FIRST_NAME
                            ) emp,
                            (SELECT Max(A.DT_END) as DT_END 
                                           FROM   contract A, 
                                                  salary E, 
                                                  department D 
                                           WHERE  A.ID_PRSN = E.ID_PRSN 
                                                  AND A.ID_DEPT = D.ID_DEPT
                            ) sal
        where emp.DT_START <= sal.DT_END;

我们需要表定义和解释它应该返回什么,以及与3个不同表中的所有关系相匹配的日期意味着ID_EMP是表EMPLOYEE中的主键吗?子查询通常通过适当的连接来完成,特别是在WHERE子句中。另外,请不要使用旧的逗号语法连接。它们是1种过期方式2会导致大量查询数据膨胀,3会很容易返回意外结果。此外,SQL的风格和版本是什么?向我们展示db模式、示例数据、当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。你们有连接3张不同桌子的模型吗
        select distinct emp.FIRST_NAME from
                            (                                     
                            SELECT FIRST_NAME, max(DT_START) as DT_START
                            FROM   employee 
                            WHERE  ID_EMP = 1 
                            group by FIRST_NAME
                            ) emp,
                            (SELECT Max(A.DT_END) as DT_END 
                                           FROM   contract A, 
                                                  salary E, 
                                                  department D 
                                           WHERE  A.ID_PRSN = E.ID_PRSN 
                                                  AND A.ID_DEPT = D.ID_DEPT
                            ) sal
        where emp.DT_START <= sal.DT_END;