1
这里以不同的名字出现两种常见的列是两个表中各表的例子:加入基于各表中的
客户
╔══════════╦════════════╗
║ GROUP_ID ║ GROUP_NAME ║
╠══════════╬════════════╣
║ abc ║ xex ║
║ def ║ tet ║
╚══════════╩════════════╝
队
╔════════╦════════════╗
║ ACT_ID ║ GROUP_NAME ║
╠════════╬════════════╣
║ 44 ║ xex ║
║ 32 ║ tet ║
╚════════╩════════════╝
动作
╔════╦════════════╗
║ ID ║ STATE ║
╠════╬════════════╣
║ 44 ║ complete ║
║ 58 ║ incomplete ║
╚════╩════════════╝
注意act_id
表teams
也存在于表actions
作为id
我要选择有两列的表:group_id
和group_name
,其中每个group_name
具有带有完整的act_id
state
。
我做这样的事情:
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 ║
╚══════════╩════════════╝
非常感谢你回答JW。您正在使用的a,b和c只是您分配给每个表的随机名称,以便您可以轻松识别它们并在查询中区分它们。你也可以给我上面的查询使用我自己更详细的格式(没有JOINS只是通过使用WHERE,IN,IS,IS NOT,=),以便我可以更好地理解你在做什么?或者没有JOIN,这是不可能的?再次感谢,我一定会看JOINs。 –
'a,b,c'被称为'ALIAS'(*或昵称*)。有很多可能的查询来达到特定的结果。我最喜欢的是使用'JOIN'。这也可以使用'EXISTS'完成。 ')' –