如何在MySQL中从三个不同的表中选择字段

如何在MySQL中从三个不同的表中选择字段,mysql,Mysql,这让我发疯,我已经在这里面呆了好几个小时,我真不知道该怎么办: 我有三张桌子: 使用者 公司 公司许可 在用户中,我有coduser和username 公司代码中的公司和公司名称 在company_权限中,我有idcompany_权限、codcompany、coduser 我想做的基本上是,通过一个查询,获得给定用户名有权访问的公司的名称 我有一个疑问: select users.coduser, users.username, companies.company_name from use

这让我发疯,我已经在这里面呆了好几个小时,我真不知道该怎么办:

我有三张桌子:

  • 使用者
  • 公司
  • 公司许可
在用户中,我有coduser和username 公司代码中的公司和公司名称 在company_权限中,我有idcompany_权限、codcompany、coduser

我想做的基本上是,通过一个查询,获得给定用户名有权访问的公司的名称

我有一个疑问:

select users.coduser, users.username, companies.company_name
from users
inner join company_permissions on users.coduser = company_permissions.coduser
inner join companies on companies.codcompany = company_permissions.codcompany
where users.username = 'test'

但是它没有返回任何东西:C(它曾经返回过,但现在没有返回)

我认为在这种情况下,应该使用左连接而不是内部连接。
无论如何,如果users.user='test',则字段必须是username。

您的查询没有错误

如果用户“测试”存在,请检查数据库

如果它是因为使用内部联接而存在的,那么它必须是所有三个表中的记录


再次检查它们

逐步测试你的陈述

1.)

有结果吗。。。用户数据不存在

(二)

有结果吗。。。公司权限和用户之间的连接正常(数据存在)

(三)


是否会导致公司和公司之间的连接权限正常

合理的结论是
users.user='test'
不存在任何数据,或者
公司权限表中没有匹配项。您可以考虑在SQL小提琴上举例说明示例数据的问题。但是,在那里,我创建了表和项目手册,它显示了一个选择用户名=“测试”为什么左边连接?o:关于用户,我很抱歉。用户,这是一个打字错误,因为我必须重新键入所有内容,因为表格和字段都是西班牙语x_xOoh谢谢,问题是其中一个id在codcompany中与两个表格不同,谢谢!:D我想我把我的问题搞砸了:c
select users.* from users 
--inner join company_permissions on users.coduser = company_permissions.coduser
--inner join companies on companies.codcompany = company_permissions.codcompany
where users.username = 'test'
select users.*
from users
inner join company_permissions on users.coduser = company_permissions.coduser
--inner join companies on companies.codcompany = company_permissions.codcompany
where users.username = 'test'
select users.*
from users
--inner join company_permissions on users.coduser = company_permissions.coduser
inner join companies on companies.codcompany = company_permissions.codcompany
where users.username = 'test'