针对多个表构造此SQL查询的正确方法

时间:2019-04-24 02:16:33

标签: sql

使用Microsoft Office单一登录的javascript网络应用程序出现问题。由于某些原因,我尚未发现用户在我的数据库中被复制。在开始对此进行故障排除之前,我想尝试清理数据库。

我想搜索Employee表中的任何用户,这些用户在任何建议表中都没有任何建议。因此,我没有删除任何建议的用户列表,这些用户具有重复的帐户。最好的方法是什么?

还请注意,rick(ID 6&7)根本没有任何贡献。删除两个帐户都会有问题。

员工

ID    name    hair
--------------------
1     bob     brown
2     jeff    blond
3     jeff    brown
4     steve   none
5     steve   none
6     rick    red
7     rick    red

suggestions_lunch

ID    suggestion        status
---------------------------------
2     free food         planned
3     warmer coffee     declined

suggestions_pay

ID    suggestion            status
----------------------------------------------
5     We pay bob too much   investigating

此处,ID 4将被删除。我想我将需要第二个SQL查询,该查询显示拥有多个帐户且在任何地方都没有捐款的所有用户。

SELECT * 
FROM employee 
WHERE ...

1 个答案:

答案 0 :(得分:0)

检查“建议”(Suggestions)列中是否存在空建议值的一种简便方法是检查是否为空

    SELECT e.name
          ,sl.suggestion
    FROM Employee e
    JOIN suggestion_lunch sl ON sl.ID = e.ID
    WHERE suggestion IS NULL;

这是您尝试做的一个好的开始。它将从 employee 表中选择名称,并从 suggestion_lunch 表中选择建议。

在选择了名称和建议后,我们根据建议午餐ID =员工ID进行内部加入

最后,我们使用WHERE检查空值。想象一下,当我们在不使用WHERE子句的情况下运行查询时...我们返回一个包含所有员工姓名和建议的表。为了仅显示具有 NO 建议的用户,我们利用了 IS NULL 子句,因为如果没有提出建议,表值将为NULL。

对于删除重复项,我建议使用GO进行单独查询