gpt4 book ai didi

MySQL 根据共同关系从多个表中选择

转载 作者:行者123 更新时间:2023-11-29 06:54:30 25 4
gpt4 key购买 nike

我有如下 3 个表:

Table: sys_department
Columns: dept_id dept_name
row: 1 Support
row: 2 HR
row: 3 Billing

Table: sys_groups
Columns: group_id group_name
row: 1 Manager
row: 2 Intern
row: 3 Staff

Table: group_dept_access
Columns: group_id dept_id
row: 1 3
row: 2 1
row: 2 2
row: 3 1
row: 3 2

我想运行一个查询来获取组名称列表以及他们有权访问的部门名称。

因此,由于 group_dept_access 中的 group_id 3 将 1 和 2 都列为 dept_id,该组将返回其 group_name of Billing 以及部门名称 Support 和 HR。

当使用 JOIN 选择 group_dept_access 时,我能够运行查询以获取 group_name,但我不知道如何查询所有三个表并获取部门。

不幸的是,我无法更改表结构,因为如果说第 3 个表没有每个组的多个条目会很好,但它是一个现有系统,因此如果更改会中断。在当前服务器上也使用 MySQL 5.1.x,但将来会使用 5.5.x。如果这样的查询在不同版本之间以不同方式完成,每个版本将如何完成?

感谢任何帮助,因为这将帮助我进行我将要执行的其他类似查询。关于它是如何完成的解释也很好,这样我就可以了解这个 3 表查询是如何完成的。提前谢谢你。

最佳答案

试试这个:

SELECT sg.group_name, A.dept_name 
FROM sys_groups sg
INNER JOIN (SELECT gda.group_id, GROUP_CONCAT(sd.dept_name SEPARATOR '|') dept_name
FROM group_dept_access gda
INNER JOIN sys_department sd ON gda.dept_id = sd.dept_id
GROUP BY gda.group_id) AS A ON sg.group_id = A.group_id

关于MySQL 根据共同关系从多个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13562376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com