ODBC 経由で NetSuite データベースに接続しており、レポートを実行するためにデータベースに対してかなり大きなクエリを作成しました。この記事の最後にコードを配置しました。私の問題は、クエリが「TRADING_PARTNER_ID」フィールドにNULLを持つ「A_T_PROJECTS」テーブルから行を除外していることです。ここで RIGHT OUTER JOIN を使用できることはわかっていますが、他のいくつかのテーブルに参加しているため、機能しないようです。私が試すことができることについて何か提案はありますか?
接続は読み取り専用であるため、一時テーブルはありません。これを単一のクエリで機能させたいと思います。御時間ありがとうございます!
SELECT
[A_T_CUSTOMERS].[COMPANYNAME] AS [Company Name],
[A_T_MILESTONES].[PROJECT_MILESTONE_NAME] AS [Name],
[A_T_PROJECTS].[COMPANYNAME] AS [Project Name],
[A_T_STATUS].[LIST_ITEM_NAME] AS [Status],
[A_T_MILESTONES].[DUE_DATE] AS [Milestone Due],
[A_T_ACTIONREQ].[LIST_ITEM_NAME] AS [Action Required By],
[A_T_PARTNERS].[COMPANYNAME] AS [Trading Partner],
[A_T_EMPLOYEES].[FULL_NAME] AS [Assigned To],
[A_T_CUSTOMERS].[ESTIMATED_DELIVERY_DATE] AS [Est Del Date],
CASE
WHEN [A_T_MILESTONES].[PROJECT_MILESTONE_NAME] = 'Project Complete/Move to Production'
THEN [A_T_MILESTONES].[DUE_DATE]
ELSE NULL
END AS [Est Move to Prod]
FROM
[CUSTOMERS] AS [A_T_CUSTOMERS],
[CUSTOMERS] AS [A_T_PROJECTS],
[PROJECT_MILESTONE] AS [A_T_MILESTONES],
[PARTNERS] AS [A_T_PARTNERS],
[STATUS] AS [A_T_STATUS],
[ACTION_REQUIRED] AS [A_T_ACTIONREQ],
[EMPLOYEES] AS [A_T_EMPLOYEES]
--RIGHT OUTER JOIN [PARTNERS] ON ([A_T_PARTNERS].[PARTNER_ID] = [A_T_PROJECTS].[TRADING_PARTNER_ID])
WHERE
-- JOIN CLAUSES --
[A_T_PROJECTS].[CUSTOMER_ID] = [A_T_MILESTONES].[PROJECT_NAME_ID]
AND [A_T_CUSTOMERS].[CUSTOMER_ID] = [A_T_MILESTONES].[CUSTOMER_MILESTONE_NAME_ID]
AND [A_T_PARTNERS].[PARTNER_ID] = [A_T_PROJECTS].[TRADING_PARTNER_ID]
AND [A_T_EMPLOYEES].[EMPLOYEE_ID] = [A_T_MILESTONES].[ASSIGNED_TO_ID]
AND [A_T_STATUS].[LIST_ID] = [A_T_MILESTONES].[STATUS_ID]
AND [A_T_ACTIONREQ].[LIST_ID] = [A_T_MILESTONES].[ACTION_REQUIRED_BY_ID]
-- FILTER CLAUSES --
AND [A_T_CUSTOMERS].[CUSTOMER_SINCE] > '2011-12-10 00:00:00'
AND ([A_T_MILESTONES].[STATUS_ID] = 1
OR [A_T_MILESTONES].[STATUS_ID] = 2
OR [A_T_MILESTONES].[STATUS_ID] = 3
OR [A_T_MILESTONES].[STATUS_ID] = 5)
AND ([A_T_PROJECTS].[STATUS] = 'Assigned'
OR [A_T_PROJECTS].[STATUS] = 'Delayed - per Customer'
OR [A_T_PROJECTS].[STATUS] = 'Delayed - per Internal'
OR [A_T_PROJECTS].[STATUS] = 'Delayed - per TP/VAN'
OR [A_T_PROJECTS].[STATUS] = 'In Progress'
OR [A_T_PROJECTS].[STATUS] = 'Production'
OR [A_T_PROJECTS].[STATUS] = 'On-Hold')
AND [A_T_CUSTOMERS].[TRANSLATOR_ID] != 4
AND [A_T_CUSTOMERS].[IN_PRODUCTION] = 'F'
AND ([A_T_PROJECTS].[JOB_TYPE_ID] IS NOT NULL
OR [A_T_PROJECTS].[JOB_TYPE_ID] != 8
OR [A_T_PROJECTS].[JOB_TYPE_ID] != 11)