Как бы вы присоединились к этим CTE? - PullRequest
0 голосов
/ 25 апреля 2019

Работая над следующим кодом SQL, я не могу найти способ правильно объединить 2 создаваемых CTE, чтобы получить правильное (или, по крайней мере, мое ожидаемое) количество записей.

TEST 1 & TEST 2 просто возвращают записи, которые каждый CTE производит независимо; n & m соответственно.

Я ожидал, что смогу извлечь n записей, используя TEST 3 (LEFT JOIN) или TEST 4 (INNER JOIN), независимо от того, какой тип из объединения, которое я использую (и я пробовал все эквиойны); Я продолжаю получать m записей.


WITH
CTE_ALL_INSPECTIONS AS
(
    SELECT
            InspectorId,
            InspectionetailId
            ...
        FROM ...
        WHERE ...
),

CTE_ALL_INSPECTORS AS
(
    SELECT DISTINCT
            InspectorId,
            COUNT(InspectionDetailId) Inspections
        FROM CTE_ALL_INSPECTIONS
        GROUP BY InspectorId
)

/*
TEST 1:
*/
/*
    SELECT * FROM CTE_ALL_INSPECTORS
*/

/*
TEST 2:
*/
/*
    SELECT * FROM CTE_ALL_INSPECTIONS
*/

/*
TEST 3:
*/
/*
    SELECT
            CTE_ALL_INSPECTIONS.*,
            CTE_ALL_INSPECTORS.Inspections
        FROM
            CTE_ALL_INSPECTORS
            LEFT JOIN CTE_ALL_INSPECTIONS
                ON CTE_ALL_INSPECTIONS.InspectorId = CTE_ALL_INSPECTORS.InspectorId
*/

/*
TEST 4:
*/
/*
    SELECT
            CTE_ALL_INSPECTIONS.*,
            CTE_ALL_INSPECTORS.Inspections
        FROM
            CTE_ALL_INSPECTORS
            INNER JOIN CTE_ALL_INSPECTIONS
                ON CTE_ALL_INSPECTIONS.InspectorId = CTE_ALL_INSPECTORS.InspectorId
*/

Как я могу получить нужные записи? или как еще можно присоединиться к этим столам?

1 Ответ

1 голос
/ 25 апреля 2019

Используйте свой ТЕСТ 3, но сделайте ... Проверки самым левым запросом:

SELECT CTE_ALL_INSPECTIONS.*
    , CTE_ALL_INSPECTORS.Inspections 
FROM CTE_ALL_INSPECTIONS
    LEFT JOIN CTE_ALL_INSPECTORS
        ON CTE_ALL_INSPECTIONS.InspectorId = CTE_ALL_INSPECTORS.InspectorId

Там написано: «Дайте мне все инспекции, а также любые подсчеты инспекторов, которые существуют».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...