如何在第一个查询中使用第二个查询的结果

3

我想使用第二个SELECT获取一些ID,然后在第二个SELECT中使用该ID,但我不知道如何操作。

SELECT Employee.Name 
FROM Emplyee, Employment 
WHERE x = Employment.DistributionID 
(SELECT Distribution.DistributionID FROM Distribution 
       WHERE Distribution.Location = 'California') AS x

这篇文章有点长,但下面是一个简短的“提示”

虽然我的select语法不好,但逻辑是正确的。我需要那个“x”。因此,第二个select是最重要的。接着,我必须在第一个select中使用那个“x”。我只是不知道如何做到。

/提示

这就是我唯一能想到的了,我在Sql方面很新,我想在练习之前先读一本书,但既然已经开始了,我想完成我的小程序。

编辑:

好吧,我查了一下连接,还是不懂。

SELECT Employee.Name 
    FROM Emplyee, Employment 
    WHERE x = Employment.DistributionID 
    LEFT JOIN Distribution ON
    (SELECT Distribution.DistributionID FROM Distribution 
           WHERE Distribution.Location = 'California') AS x

ASLeft处收到错误消息。

我使用名称从上面的红色表格中查找ID,然后我使用上面红色表格中找到的ID在下面的表格中进行匹配。然后我将找到的ID与绿色表格中的匹配。我使用绿色表格中的ID查找相应的名称。

enter image description here

我从C#输出数据中得到California。我想使用California来查找DistributionID。我使用DistributionID来查找EmployeeID。我使用EmployeeID来查找名称。

我的逻辑:

Parameter: Distribution.Name (from C#)

Find DistributionID that has Distribution.Name
Look in Employment WHERE given DistributionID 
      reveals Employees that I am looking for (BY ID)
Use that ID to find Name
      return Name

表格:

注:在这个示例图片中,由于选择的原因,员工重复出现,实际上他们是单数

在“Locatie”(中间表格)中是位置,我从C#中获取位置(再次),我以California为例。首先我需要找到ID!

enter image description here

抱歉,它们不是用英语写的,但是这里是创建表的内容:

enter image description here


2
通常基于共同的ID获取相关记录的方法是使用“连接(join)”。你可能需要花点时间了解一下连接(join)。 - mechanical_meat
1
也许现在介绍子查询还为时过早。 - mechanical_meat
“Employment”表与“Employee”表有什么关联? - showdev
@showdev 就业拥有一份员工名单,这些员工位于分销区(即他们所居住的地方)。就业是我当场翻译成英语的词,也许不是很完美。 - Kalec
1
@Kalec - 如果您不发布表格和一些真实或虚假数据,您是否真的希望我们充分理解您的问题?这有多难理解,创建结构以获得更好的答案又有多难? - Art
显示剩余8条评论
2个回答

2

试试这个:

SELECT angajati.Nume 
FROM angajati 
JOIN angajari  ON angajati.AngajatID = angajari.AngajatID
JOIN distribuire ON angajari.distribuireid = distribuire.distribuireid
WHERE distribuire.locatie = 'california'

由于您有一个将员工映射到其分配位置的表格,因此您只需要在中间加入该表格即可创建映射。如果您喜欢,可以使用变量作为WHERE子句,以便从C#代码的输出中调用此存储过程或其他内容。


0
我不知道您如何连接员工和就业信息,但是您需要使用联接将两个表连接起来,并在联接中指定表之间的关系。最好为联接指定别名,这样您就不必重复整个表名。以下查询将从Employment和Distribution表中获取所有信息,其中分配位置等于加利福尼亚州。您可以将员工连接到就业信息以获取名称。
SELECT *
FROM Employment e
JOIN Distribution d on d.DistributionID = e.DistributionID
WHERE d.Location = 'California'

这将返回两个表的内容。要选择特定记录,请在选择语句中使用别名 [Col_Name],用逗号分隔,例如 d.DistributionID 从 Distribution 表返回 DistributionID。


我已经从C#中获取了位置(加利福尼亚州),我需要使用它来查找加利福尼亚州的DistributionID,然后我再查看Employment表格并找到加利福尼亚州的员工。但是这个查询给我返回了一个空表。 - Kalec
我尽可能添加了更多信息。由于我已经说过的内容,您的选择无法正常工作。我在帖子中添加了一个“提示”,希望能有所帮助。 - Kalec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接