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

时间:2014-07-24 11:04:41

标签: mysql

这让我发疯,我已经花了好几个小时,我只是不知道该怎么做:

我有3张桌子:

  • 用户
  • 公司
  • company_permissions

在用户中我有coduser和用户名 在公司codcompany和company_name 在company_permissions中我有idcompany_permissions,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(它曾经在某一点上做过,但现在却没有做到)

3 个答案:

答案 0 :(得分:1)

您的查询没有错误

检查数据库是否存在用户'test'

如果因为你使用内连接而存在它必须是所有三个表中的记录

再次检查

答案 1 :(得分:0)

我认为对于这种情况,你应该使用LEFT JOIN而不是INNER JOIN。 无论如何,WHERE users.user =' test',我的访客该字段必须是用户名。

答案 2 :(得分:0)

逐步测试您的陈述

1)

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'

是否有结果......用户数据存在

2)。

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'

是否有结果...... company_permissions和users之间的连接正常(数据存在)

3。)

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'

是否有公司和company_permissions之间的连接正常..