gpt4 book ai didi

mysql - SQL链接5个表

转载 作者:行者123 更新时间:2023-11-29 14:46:32 24 4
gpt4 key购买 nike

还有更多内容,但有 3 张 table ...

employees  
employee_id

licenses
license_id
employee_id


companies
company_id
employee_id

SELECT * FROM employees
LEFT JOIN licenses
ON employees.employee_id = licenses.employee_id
LEFT JOIN companies
ON employees.employee_id = companies.employee_id
GROUP BY employees.employee_id

我只能得到它,所以许可证或公司返回一个值,另一个返回 NULL。我怎样才能得到它,以便两个表都返回值?看起来很简单,但在这种情况下不起作用,我不明白为什么......

编辑:这里有一些更多信息。
并非每个员工都拥有许可证。
并非每个员工都拥有一家公司。

想要返回employee_id license_id(如果存在,否则为NULL)company_id(如果存在,否则为NULL)

以员工同时拥有license_id 和company_id 的情况为例。通过删除其中一个JOIN子句,可以返回相应的值。但是,当两者组合时,仅返回company_id,license_id返回NULL。

很奇怪吧?有什么想法或需要更多信息吗?

数据:
员工 ID
1
2
3

员工 ID 许可证 ID1 1
2 1
3 2

员工 ID 公司 ID1 1
2 1
3 2

抱歉浪费时间

表架构搞砸了并且是多余的。这是一个继承的模式,我只考虑 SQL,而不是底层结构。数据库需要重组。

最佳答案

如果没有看到表中的数据,这个问题很难回答。因此,我将做出假设,每个表中的行都具有相同的 Employee_ID,因此联接有效。在您进行测试时,我建议您也选择一个 Employee_id 来使用,以简化测试时的输出。

根据我的假设,我将您的查询切换为内部联接,这只会显示与 Employee_id 匹配的行。我还使用了“别名”。我在每个表指针后面放置的单个字母可以节省大量打字时间。

SELECT *
FROM employees e
INNER JOIN licenses l
ON e.employee_id = l.employee_id
INNER JOIN companies
ON e.employee_id = c.employee_id
GROUP BY employee_id

如果您不熟悉 SQL 连接,this article可能也会有帮助。祝你好运!

关于mysql - SQL链接5个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6865647/

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