我有两个表;一个带有联系信息,另一个带有一个组列表。例如:SQL查询其中两列的组合是唯一的(带有子查询)
clients
+-------------+---------------+-------------+------------+
| client_id | client_name | group1_id | group2_id |
+-------------+---------------+-------------+------------+
| 283 | John Smith | 1 | null |
| 284 | Jane Smith | 1 | 2 |
| 285 | Tim Johnson | 1 | null |
| 286 | Peter Guy | null | null |
+-------------+---------------+-------------+------------+
groups
+------------+----------------+
| group_id | group_name |
+------------+----------------+
| 1 | Smith Group |
| 2 | Johnson Group |
+------------+----------------+
如果不是不言而喻,group1_id和group2_id是组表中的外键。
我需要编写一个查询来选择客户端名称和组名称。如果客户是两个组的成员(如Jane Smith),他们应该在输出中出现两次。理想情况下,每行应输出组名称,然后在括号中输入客户名称,所有结果应按字母顺序排序。所以对于上面的表输出应该是:
John Smith (Jane Smith)
Johnson Group (Jane Smith)
Johnson Group (Tim Johnson)
Smith Group (John Smith)
这是可能使用单个SQL查询吗?
我正在使用MySQL。目前我正处于项目的计划阶段,所以如果我需要更改数据库模式以更好地支持我的工作。
在此先感谢。
如果客户是3个组的成员,该怎么办? – Strawberry
@Strawberry我们做出了不支持三组的设计决定。一个客户分两个组是很少见的。他们分成三组并不是不可能的,但实际上它可能永远不会发生。在我们的情况下,如果组3没有在输出中列出,那么它不是世界末日。 – Gechurch