【问题标题】:How do I get 5 values from 3 different tables? [MYSQL]如何从 3 个不同的表中获取 5 个值? [MYSQL]
【发布时间】:2021-11-11 11:07:24
【问题描述】:

MYSQL

我正在尝试从 3 个单独的表中获取 5 个值,其中每个值都在它自己的列中。

我要获取的值是:SC_Name、SC_Description、AR_Name、AR_Description、AR_id

我有 3 个表从中提取数据:

Service_Category
Area_Responsibility
Key_Scar

Service_Category 包含以下列:

id
SC_Name
SC_Description

Area_Responsibility 包含以下列:

id
AR_Name
AR_Description

Key_SCAR 包含以下列:

id
KS_id
SC_id
AR_id

拥有 3 个单独的表的目的是让我可以更好地分离前两个表中的数据,然后在第三个表中根据 KS_id 和来自 Service_Category 的 id 和来自 Area_Responsibility 的 id 将它们链接在一起。

目前我有以下个人查询(KS_id 始终为 1):

SELECT a.SC_Name, a.SC_Description 
FROM Service_Category AS a 
where a.id IN (SELECT SC_id 
FROM Key_SCAR 
WHERE KS_id = 1);
    
SELECT a.AR_Name, a.AR_Description 
FROM Area_Responsibility AS a 
where a.id IN (SELECT AR_id 
FROM Key_SCAR 
WHERE KS_id = 1);

我想将这些加入到一个查询中,输出:SC_Name、SC_Description、AR_Name、AR_Description 和 AR_id。

我尝试将这两个查询合并如下:

SELECT a.SC_Name, a.SC_Description 
FROM Service_Category AS a 
where a.id IN (SELECT SC_id 
FROM Key_SCAR 
WHERE KS_id = 1) 
UNION 
SELECT b.AR_Name, b.AR_Description 
FROM Area_Responsibility AS b 
where a.id IN (SELECT AR_id 
FROM Key_SCAR 
WHERE KS_id = 1);

但这不适用于我的输出,因为我使用的解释器将 AR_Name 和 AR_Description 放在列标题 SC_Name 和 SC_Description 下。我需要每个输出的值都在它们自己的列中。

我希望这可以很好地解释它,并提前感谢您的帮助!

【问题讨论】:

  • 请尽可能提供少量样本数据和预期输出。
  • 手册和查找 JOIN,它确实是 SQL 的基本构建块之一
  • 嗨:一切都很好,下面的 Groovy 家伙提供的答案让我得到了解决方案。我还在学习,所以有人帮助真是太棒了。感谢大家的反馈。
  • 该答案可能有效 - 但前提是您在两个表中具有相同的 ID。

标签: mysql sql select union


【解决方案1】:

您可以通过以下方式尝试使用 join 方法实现所需的结果,

SELECT SC.SC_Name, SC.SC_Description, AR.AR_Name, AR.AR_Description, KS.AR_id
FROM Key_SCAR KS 
INNER JOIN Service_Category SC ON SC.id = KS.SC_id
INNER JOIN Area_Responsibility AR ON AR.id = KS.AR_id
WHERE KS.KS_id = 1;

【讨论】:

  • 尝试改用LEFT JOINRIGHT JOIN 效果也不错
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 2015-12-23
  • 2012-03-12
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
相关资源
最近更新 更多