将2个sql查询合并为一个

时间:2014-12-28 00:25:02

标签: mysql sql

我花了很多时间将我的查询合并为一个。我有3个数据库表。这是示例模式。 enter image description here

我只有会话的用户名。我需要从用户公司获取数据库中的所有票据。
实施例:
用户A在B公司工作。 公司B有很多工人。工人创造门票。
用户A登录后查看您公司的所有门票。 我现在用2个查询完成了这个:
- 使用公司ID
- 获取用户在特定公司工作的门票。

3 个答案:

答案 0 :(得分:4)

这应该这样做:

SELECT *
FROM User u1 
INNER JOIN User u2 on u2.id_company = u1.id_company
INNER JOIN Ticket t on t.id_author = u2.id_user
WHERE u1.Name = @SessionUser

答案 1 :(得分:1)

这是你在找什么?

select t.*
from users u join
     tickets t
     on u.id_user = t.id_author
where u.company_id = (select u2.company_id from users u2 where u2.id_user = 'UserA');

答案 2 :(得分:1)

连接通常比子查询更快,但是很多DBMS'将子查询优化为连接,因此查询之间的差异可能并不重要。下面是Gordon Linoff删除子查询的重写版本。

   select t.* from Users u1 
   join User u2 on u2.id_company = u1.id_company
   join Ticket t on t.id_author = u1.id_user
   where u1.id.user = 'User1';

然而,如果您的数据库优化SQL,差异可以忽略不计。

相关问题