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

问题描述 投票:0回答:1

我有一个使用Microsoft Office单点登录的javascript webapp的问题。由于某种原因,我还没有发现,用户正在我的数据库中重复。在我开始排除故障之前,我想尝试清理数据库。

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

另请注意瑞克(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 ...
sql
1个回答
0
投票

检查“建议”列中的空建议值是否存在或不存在的简单方法是检查是否为null

    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子句的查询时......我们会找回一个包含所有员工姓名和建议的表。要仅显示没有建议的用户,我们利用IS NULL子句,因为当没有建议时,表值将为NULL。

至于删除重复项,我建议使用GO加入单独的查询

© www.soinside.com 2019 - 2024. All rights reserved.