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