Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Join 在SQL中连接多个表_Join - Fatal编程技术网

Join 在SQL中连接多个表

Join 在SQL中连接多个表,join,Join,我希望今天有人能帮我处理sql查询。我不太懂sql,但今天突然需要运行一个。我有4个表需要合并成一个表,表1队列表作为基础。我需要知道哪个支持小组正在做什么。 下面是我试图找出的一个最终结果的例子。请让我知道如何在SQL中做到这一点,我知道join可以做到这一点,但除了常规的select查询之外,我对SQL还不太熟悉。 我需要知道处理每个队列的支持组 理想情况下,我正在寻找这个结果。 队列ID队列名称支持组ID支持组名称 1230客户服务部12 Russel 1231技术支持13马丁 1232销

我希望今天有人能帮我处理sql查询。我不太懂sql,但今天突然需要运行一个。我有4个表需要合并成一个表,表1队列表作为基础。我需要知道哪个支持小组正在做什么。 下面是我试图找出的一个最终结果的例子。请让我知道如何在SQL中做到这一点,我知道join可以做到这一点,但除了常规的select查询之外,我对SQL还不太熟悉。 我需要知道处理每个队列的支持组

理想情况下,我正在寻找这个结果。 队列ID队列名称支持组ID支持组名称 1230客户服务部12 Russel 1231技术支持13马丁 1232销售支持14 1233供应商支持15

如果可能的话,我还可以知道每个支持小组的团队成员是谁吗

请参考下表了解来源或附件

如果你还需要我帮忙,请告诉我

非常感谢您的帮助

队列表1 队列\u ID队列\u名称 1230客户服务 1231技术支持 1232销售支持 1233供应商支持

队列+支持组表2 队列ID支持组ID 1230 12 1231 13 1232 14 1233 15

支助小组表3 Support\u Group\u ID Support\u GroupName 12拉塞尔 13马丁 14亚瑟 15肯尼迪

支持小组成员表4 支持\u组ID成员\u名称 12里娜 12奥斯蒙 12德西雷 13玛丽亚 13托多罗夫 14凯尔 14安德鲁 14马克 15黛米 15雪儿 15克里斯汀


虽然您说不熟悉SQL连接,但如果您想使用SQL,则需要学习。左连接是您所寻求的。因此,您将两个表上的队列_id上的表1和表2连接起来。在同一查询中,您在同一外键上连接表2和表3。你可以看到图案。请参阅此页:

您可能希望使用SQL连接。其工作方式是,您需要一个表中的列具有引用另一个表中的行的值。这被称为外键。我不会告诉你如何解决你的问题,因为这对我来说需要花费太多的时间来解决,但下面是一个简单的客户和地址示例,如果你能理解,你会发现你的问题非常简单。我建议您研究主键和外键

假设我有两个表,tbl_客户和tbl_地址。它们看起来像这样:

tbl_customers: PK_CUSTOMER_ID | FK_ADDRESS_ID | First_Name | Last_Name
                     0                0           person1     lname1
                     1                1           person2     lname2
                     2                0           person3     lname1

tbl_addresses: PK_ADDRESS_ID | House_Number | Road_Name | Post_Code
                     0              123        fake rd     AB1 2CD
                     1              456        new ln      ZY9 8XW
因此,在简要阅读之后,您可以看到person1和person3住在同一个地址,并共享一个姓氏,而person2根据我们的数据库独立生活,并有一个单独的姓氏。假设我们想要得到所有的人的信息和他们的地址。这是可以使用内部连接语句之类的语句的地方。例如:

SELECT * FROM tbl_customers INNER JOIN tbl_addresses ON FK_ADDRESS_ID = PK_ADDRESS_ID WHERE First_Name = 'person1'
这将返回一个如下所示的表:

PK_CUSTOMER_ID | FK_ADDRESS_ID | First_Name | Last_Name | PK_ADDRESS_ID | House_Number | Road_Name | Post_Code
      0               0           person1      lname1           0             123         fake rd     AB1 2CD
希望这有帮助,如果你需要帮助,你最好在谷歌上搜索SQL连接。祝你好运:

-詹姆斯

编辑-内部连接可能是也可能不是适合您情况的最佳连接,我通常使用它,因为它对我的所有需求都相当灵活,而且我还没有遇到过它没有用处的场景

第二次编辑-刚刚意识到这可能无法回答您关于连接两个以上表格的问题。这同样简单,假设我有另一个名为tbl_orders的表,我想从所有三个表中选择所有信息,语句如下:

SELECT * FROM tbl_customers INNER JOIN tbl_addresses ON FK_ADDRESS_ID = PK_ADDRESS_ID INNER JOIN tbl_orders ON FK_PERSON_ID = PK_PERSON_ID WHERE First_Name = 'person1'

沿着这些路线的东西。您可以根据需要拥有任意多个联接。

因此,我想与您分享,我在youtube上找到了一个由Jamie King先生提供的视频,我能够通过使用他的查询作为模式来解决问题。但我马上看到了很多回应,这让我今天非常高兴。我会抽出时间回答你们每一个人,因为我真的很感谢你们大家花时间研究我的问题。 这是我创建的查询,也是JOIN。它很好用。它可能更长,而且编码比通常更为传统

SELECT [imucc_awdb].[dbo].[Call_Type].[CallTypeID],
        [imucc_awdb].[dbo].[Call_Type].[EnterpriseName],
        [imucc_awdb].[dbo].[Call_Type_SG_Interval].SkillGroupSkillTargetID,
        [imucc_awdb].[dbo].[Skill_Group].[EnterpriseName],
        [imucc_awdb].[dbo].[Skill_Group_Member].[SkillGroupSkillTargetID],
        [imucc_awdb].[dbo].[Agent].[SkillTargetID],
        [imucc_awdb].[dbo].[Agent].[EnterpriseName]
  FROM [imucc_awdb].[dbo].[Call_Type] join [imucc_awdb].[dbo].[Call_Type_SG_Interval] on [imucc_awdb].[dbo].[Call_Type].CallTypeID=[imucc_awdb].[dbo].[Call_Type_SG_Interval].CallTypeID
  join Skill_Group
  on [imucc_awdb].[dbo].[Call_Type_SG_Interval].SkillGroupSkillTargetID=[imucc_awdb].[dbo].[Skill_Group].[SkillTargetID]
  join Skill_Group_Member
  on [imucc_awdb].[dbo].[Skill_Group].[SkillTargetID]=[imucc_awdb].[dbo].[Skill_Group_Member].[SkillGroupSkillTargetID]
  join Agent
  on [imucc_awdb].[dbo].[Skill_Group_Member].[AgentSkillTargetID]=[imucc_awdb].[dbo].[Agent].[SkillTargetID]
  order by [imucc_awdb].[dbo].[Call_Type].[EnterpriseName]

你有没有试过?你试过先加入两张桌子吗?然后加入表A&B、C&D,加入AB&CD组合?大家好@Evert,所以我做了多个连接,效果很好。我在这里的最后一条消息中发布了我的确切sql查询。让我知道你的想法。我知道这可能很简单。谢谢你的评论。谢谢@user594643。我将研究你发送的链接,因为我同意你的看法,现在学习sql是一项要求。。。至少在我的这份工作中。非常感谢,但我不知道我加入了什么样的组织。如果你注意到在我的上一篇文章中,作为我的解决方案,我使用多个连接,但不是右连接、左连接或内连接。只是一个简单的连接。我将研究更多关于这属于哪种类型的加入:无论如何,谢谢你的长篇大论。它在Join的另一端也提供了一个信息。