簡體   English   中英

將2個SQL查詢合並為一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM