MySQL: доступ к псевдониму таблицы внутреннего выбора в другом внутреннем выборе - PullRequest
0 голосов
/ 22 мая 2018

Я видел несколько похожих постов, пытаясь изменить примеры, чтобы они работали для моего случая, но не смог этого сделать.

У меня есть 3 таблицы: A, B и C, которые содержатмиллионов записей.

Я хочу иметь возможность:

  1. Отфильтровать некоторые записи таблицы A.

  2. Затем на отфильтрованной таблице снова отфильтруйте ее, соединив ее с таблицей B на основе общего столбца в обеих таблицах.

  3. Затем на отфильтрованной таблице отфильтруйте еще большеприсоединив его к таблице C на основе общего столбца в обеих таблицах

  4. Подсчитайте количество записей в таблице c.

Я попробовал следующее:

select count(*) from 
    (select  A.exmp_column from A where A.insert_date BETWEEN '2018-03-28 00:10:38' and '2018-03-29 00:10:38') as a,

    (select * from B where a.shared_column = B.shared_column) as b,

    (select * from C where b.shared_column = C.shared_column) as c;

Но кажется, что я не могу использовать псевдонимы a и b внутри внутреннего выбора. Как я могу достичь того, что мне нужно?

Извините, если моя терминология неверна, я новичок в SQL.Спасибо

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Как объяснялось ранее, вы можете использовать CTE для каждого из ваших требований, а затем комбинировать CTE и получать счет, присоединяясь к CTE:

;WITH cte_a AS
(select  A.exmp_column 
FROM A 
WHERE A.insert_date BETWEEN '2018-03-28 00:10:38' and '2018-03-29 00:10:38')
, cte_b AS
(select * 
FROM B 
WHERE a.shared_column = B.shared_column)
, cte_c AS
(select * 
FROM C 
WHERE b.shared_column = C.shared_column)
SELECT COUNT(c.*)
FROM cte_a a JOIN cte_b b ON a.shared_column = b.shared_column
JOIN cte_c c ON c.shared_column = b.shared_column
0 голосов
/ 22 мая 2018

Это то, что вы хотите?

select count(*) 
from A
inner join B on A.shared_column = B.shared_column
inner join C on B.shared_column = C.shared_column
where A.insert_date BETWEEN '2018-03-28 00:10:38' and '2018-03-29 00:10:38'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...