簡體   English   中英

聯合所有與加入

[英]Union All with Join

我正在嘗試在 Union All 之后執行連接。 兩個查詢分別工作,但我無法拼湊連接。 然后需要通過 accounts 表中的 assigned_user_id 加入 Unioned 查詢

(SELECT 
       c.[id]
      ,c.[assigned_user_id]
      ,c.[assigned_user_name]
  FROM DB.[Sales] AS s
  WHERE [IsCurrent] = 1

  UNION ALL 

SELECT 
       m.[id]
      ,m.[assigned_user_id]
      ,m.[assigned_user_name]
  FROM [DB].[Units] AS u
  WHERE [IsCurrent] = 1)


 (SELECT 
       a.[id]
      ,a.[assigned_user_name]
      ,u.[id] 
  FROM [DB].[Accounts] AS a
  JOIN [DB].[Users] AS u  ON a.[assigned_user_name] = u.[full_name]
  WHERE a.[IsCurrent] = 1 AND u.IsCurrent = 1)

您需要使它們成為子查詢,如下所示:

SELECT * -- something here, not sure what you need
  FROM (SELECT s.[id]
              ,s.[assigned_user_id]
              ,s.[assigned_user_name]
          FROM DB.[Sales] AS s
          WHERE [IsCurrent] = 1

          UNION ALL 

        SELECT u.[id]
              ,u.[assigned_user_id]
              ,u.[assigned_user_name]
          FROM [DB].[Units] AS u
          WHERE [IsCurrent] = 1
     ) unioned
  JOIN (SELECT a.[id] as assigned_account_id 
             , a.[assigned_user_name]
             , u.[id] as assigned_user_id -- not sure if this is the column you want to join on
          FROM [DB].[Accounts] AS a
          JOIN [DB].[Users] AS u  ON a.[assigned_user_name] = u.[full_name]
         WHERE a.[IsCurrent] = 1 AND u.IsCurrent = 1
     ) account_user
    ON unioned.assigned_user_id = account_user.assigned_user_id

我個人不喜歡這么長的子查詢,並且會使用 CTE 編寫它:

WITH unioned AS (
    SELECT s.[id]
          ,s.[assigned_user_id]
          ,s.[assigned_user_name]
      FROM DB.[Sales] AS s
     WHERE [IsCurrent] = 1

      UNION ALL 

    SELECT u.[id]
          ,u.[assigned_user_id]
          ,u.[assigned_user_name]
      FROM [DB].[Units] AS u
     WHERE [IsCurrent] = 1
),
account_users AS (
    SELECT a.[id] as assigned_account_id 
         , a.[assigned_user_name]
         , u.[id] as assigned_user_id -- not sure if this is the column you want to join on
      FROM [DB].[Accounts] AS a
      JOIN [DB].[Users] AS u  ON a.[assigned_user_name] = u.[full_name]
     WHERE a.[IsCurrent] = 1 AND u.IsCurrent = 1
)
SELECT * -- something here, not sure what you need
  FROM unioned
  JOIN account_user
    ON unioned.assigned_user_id = account_user.assigned_user_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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