在多对多关系中查找只有一个匹配项的元组



O拥有一个带有"客户端"表的MySQL数据库:

id_client(主(

name_cliet(唯一(

一个"帐户"平板电脑与:

id_account(主(

name_account(唯一(

以及多对多的"客户账户":

id_client_account(主(

id_client(用户fk(

id_account(账户的fk(

我需要:查找*从客户那里。。。。。在这种情况下,我需要帮助,我需要至少有一个帐户的客户,而这个帐户只有这个客户。示例:带有示例数据的客户端表:

1,John

2、Alex

3、Steve

带有示例数据的账户表:

1、节省

2、银行

3、学校

带有示例数据的Client_Account表:

1,1,1("John"有一个"储蓄"账户(

1,2,3("lex"有一个"school"帐户(

1,3,1("eve"有一个"储蓄"账户(

需要SQL显示:

2、Alex

因为它是唯一一个至少有一个账户的客户,也是该账户的唯一所有者

使用联接,然后使用客户端GROUP BY,并使用HAVING子句来检查count(*)是否恰好为一。

SELECT c.id_client,
c.name_client
FROM client c
INNER JOIN client_account ca
ON ca.id_client = c.id_client
INNER JOIN account a
ON a.id_account = ca.id_account
GROUP BY c.id_client,
c.name_client
HAVING count(*) = 1;

最新更新