使用子查询的SQL解决方案?

算法

我是一个初学者,尝试使用基于此架构的表来学习和练习SQL:

  • EMPLOYEE -- ID, Name

  • ASSIGNMENT- ,IDCountryStartEnd

主键是,Employee.ID并且所有四列显示为ASSIGNMENT并且ASSIGNMENT.ID是对的引用EMPLOYEE.ID开始和结束的范围以年为单位。

问题:我正在尝试编写一个查询,该查询将显示在加拿大完成工作分配后直接分配给美国工作分配的所有雇员(按姓名)。

这是我目前的尝试,无法计算。我相信我正在朝正确的方向前进,但是存在语法错误。

SELECT 
    E.Name
FROM 
    EMPLOYEE E
INNER JOIN 
    ASSIGNMENT A ON E.ID = A.ID
WHERE 
    (SELECT End FROM ASSIGNMENT 
     WHERE Country = 'Canada') = (SELECT Start FROM ASSIGNMENT 
                                  WHERE COUNTRY = 'USA')
GROUP BY 
    E.Name;

欢迎任何有益于我理解错误观念的批评。我的错误来自WHERE子句中子查询的组合

此子查询最多可以返回一条记录。

也许有人可以告诉我另一种计算方法?

由于我发现可以轻松快速地建立数据库和关系,因此正在MS Access中对该查询进行测试。

崩溃

代替子查询,使用另一个联接并向联接条件添加约束:

SELECT 
    E.Name
FROM 
    EMPLOYEE E
INNER JOIN 
    ASSIGNMENT A ON (     E.ID      = A.ID 
                      AND A.Country = 'Canada' )
INNER JOIN
    ASSIGNMENT B ON (     E.ID      = B.ID 
                      AND B.Country = 'USA'
                      AND B.Start   = A.End    )
GROUP BY 
    E.Name;

更新

OP报告了来自MS Access的错误,抱怨上述版本的复合联接条件。但是,您可以安全地将内部联接条件移到where子句。但是,临时结果集将会增长,因为首先生成表的产品时会减少约束,然后再进行过滤(好的查询优化器可能会避免不必要的记录生成,但是我不知道MS Access在这方面的功能)。

SELECT 
    E.Name
FROM 
    EMPLOYEE E
INNER JOIN 
    ASSIGNMENT A ON ( E.ID = A.ID )
INNER JOIN
    ASSIGNMENT B ON ( E.ID = B.ID )
WHERE
        A.Country = 'Canada'
    AND B.Country = 'USA'
    AND B.Start   = A.End
GROUP BY 
    E.Name;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL查询解决方案?

来自分类Dev

子查询使用select语句返回超过1行的更新查询解决方案

来自分类Dev

用于3个查询的SQL查询解决方案

来自分类Dev

用于3个查询的SQL查询解决方案

来自分类Dev

SQL中关于查询的中期解决方案

来自分类Dev

使用JOIN或其他解决方案进行MySQL查询

来自分类Dev

该查询的解决方案是什么?

来自分类Dev

数据验证查询的报告解决方案

来自分类Dev

C ++弱函子解决方案

来自分类Dev

最佳的SQL无循环解决方案

来自分类Dev

SQL Server枢轴解决方案

来自分类Dev

加快慢速SELECT DISTINCT查询SQL Server的解决方案

来自分类Dev

SQL查询解决方案混淆,按group by和Have子句混淆

来自分类Dev

Java SQL查询结果集始终返回null找不到解决方案

来自分类Dev

SQL查询比较处理效率,有没有更好的解决方案?

来自分类Dev

使用JiTCDDE的意外解决方案

来自分类Dev

HttpParams不赞成使用的解决方案

来自分类Dev

使用递归的解决方案数量

来自分类Dev

什么是最佳解决方案,请使用内部联接或多个查询?

来自分类Dev

关闭浏览器时使用ajax执行查询的解决方案

来自分类Dev

PROC SQL:如何将多个查询放在一个查询中,以便解决方案并排?

来自分类Dev

我想使用记忆来解决离散子序列问题来优化我的递归解决方案

来自分类Dev

嵌套Linq查询的更优雅的解决方案?

来自分类Dev

此MySQL查询的等效DynamoDB解决方案是什么?

来自分类Dev

JuMP查询解决方案不适用于for循环

来自分类Dev

MySQL数据库查询解决方案?

来自分类Dev

mysql查询中的concat()函数或替代解决方案

来自分类Dev

递归解决方案?

来自分类Dev

解决方案的投影

Related 相关文章

热门标签

归档