[英]Combining 2 sql queries into one
我花了很多時間將查詢合並為一個查詢。 我有3個數據庫表。 這是示例架構。
我只有會話用戶名。 我需要從用戶公司的數據庫中獲取所有票證。
例:
用戶A在公司B中工作。
B公司有很多工人。 制作票的工人。
登錄后的用戶A查看您公司的所有票證。
我現在使用2個查詢完成此操作:
-以用戶名A公司ID
-在用戶在特定公司工作的地方拿票。
應該這樣做:
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
這是你想要的?
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');
聯接通常比子查詢快,但是許多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,則差異可以忽略不計。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.