Sql 基于在每个表中以不同名称显示的两个公共列连接两个表

Sql 基于在每个表中以不同名称显示的两个公共列连接两个表,sql,Sql,以下是表格示例: 客户 ╔══════════╦════════════╗ ║ GROUP_ID ║ GROUP_NAME ║ ╠══════════╬════════════╣ ║ abc ║ xex ║ ║ def ║ tet ║ ╚══════════╩════════════╝ ╔════════╦════════════╗ ║ ACT_ID ║ GROUP_NAME ║ ╠════════╬════════════╣ ║ 44

以下是表格示例:

客户

╔══════════╦════════════╗
║ GROUP_ID ║ GROUP_NAME ║
╠══════════╬════════════╣
║ abc      ║ xex        ║
║ def      ║ tet        ║
╚══════════╩════════════╝ 
╔════════╦════════════╗
║ ACT_ID ║ GROUP_NAME ║
╠════════╬════════════╣
║     44 ║ xex        ║
║     32 ║ tet        ║
╚════════╩════════════╝
╔════╦════════════╗
║ ID ║   STATE    ║
╠════╬════════════╣
║ 44 ║ complete   ║
║ 58 ║ incomplete ║
╚════╩════════════╝  
团队

╔══════════╦════════════╗
║ GROUP_ID ║ GROUP_NAME ║
╠══════════╬════════════╣
║ abc      ║ xex        ║
║ def      ║ tet        ║
╚══════════╩════════════╝ 
╔════════╦════════════╗
║ ACT_ID ║ GROUP_NAME ║
╠════════╬════════════╣
║     44 ║ xex        ║
║     32 ║ tet        ║
╚════════╩════════════╝
╔════╦════════════╗
║ ID ║   STATE    ║
╠════╬════════════╣
║ 44 ║ complete   ║
║ 58 ║ incomplete ║
╚════╩════════════╝  
行动

╔══════════╦════════════╗
║ GROUP_ID ║ GROUP_NAME ║
╠══════════╬════════════╣
║ abc      ║ xex        ║
║ def      ║ tet        ║
╚══════════╩════════════╝ 
╔════════╦════════════╗
║ ACT_ID ║ GROUP_NAME ║
╠════════╬════════════╣
║     44 ║ xex        ║
║     32 ║ tet        ║
╚════════╩════════════╝
╔════╦════════════╗
║ ID ║   STATE    ║
╠════╬════════════╣
║ 44 ║ complete   ║
║ 58 ║ incomplete ║
╚════╩════════════╝  
请注意,表
teams
中的
act\u id
也以
id

我想选择一个包含两列的表:
group\u id
group\u name
,其中每个
group\u name
都有一个
act\u id
,该id具有完整的
状态

我在做一些事情,比如:

SELECT group_id AND group_name 
FROM clients
WHERE group_name IN (SELECT group_name  
                     FROM teams, actions
                     WHERE teams.act_id = actions.id 
                       AND actions.state IS complete)
这是正确的吗

我也想到了类似的事情

SELECT group_id AND group_name 
FROM clients
WHERE group_name IN (SELECT group_name 
                     FROM teams
                     WHERE act_id IN (SELECT id 
                                      FROM actions
                                      WHERE teams.act_id = actions.id. 
                                        AND state IS complete))
以上哪一项是正确的

我想要的桌子显然是这个:

╔══════════╦════════════╗
║ GROUP_ID ║ GROUP_NAME ║
╠══════════╬════════════╣
║ abc      ║ xex        ║
╚══════════╩════════════╝
您在sql查询中看到的星号
*
意味着它将选择“可用”中的所有列,在这种情况下,它将从表
客户机中选择所有列。如果要仅为特定列选择,请使用
逗号
分隔not
。例如

SELECT  a.GROUP_ID, a.GROUP_NAME
FROM    clients a
        INNER JOIN teams b
            ON a.group_name = b.group_name
        INNER JOIN actions c
            ON b.act_ID = c.id
WHERE   c.state = 'complete'
要进一步了解加入的更多信息,请访问以下链接:


非常感谢您回答JW。您使用的a、b和c只是随机分配给每个表的名称,以便您可以轻松地识别它们并在查询中区分它们,对吗?您也可以使用我自己更详细的格式(不使用连接,只使用WHERE,IN,IS,IS,NOT,=)给我上面的查询,以便我更好地理解您在做什么?或者说,没有连接是不可能的?再次感谢,我一定会看看连接。
a、b、c
被称为
ALIAS
(或人名的昵称)。有许多可能的查询来实现特定的结果。我最喜欢的方法是使用
JOIN
。也可以使用
EXISTS
完成此操作<代码>;)