Так же, как вы используете таблицу:
select count(*)
from qa_posts
where parentid not in (select pwa.postid from post_with_answers pwa);
Я бы предостерег вас от использования not in
с подзапросом. Строки не возвращаются, если хотя бы одно значение из подзапроса равно NULL
. По этой причине я рекомендую NOT EXISTS
:
select count(*)
from qa_posts p
where not exists (select 1
from post_with_answers pwa
where p.parentid = pwa.postid
);
Кроме того, определение вашего представления немного сложнее. Вам не нужны подзапросы:
create view post_with_answers AS
SELECT DISTINCT pq.postid
FROM qa_posts pq JOIN
qa_posts pa
ON pq.postid = pa.parentid
WHERE pq.type = 'Q' AND pa.type = 'A';
Тогда DISTINCT
просто добавляет накладные расходы, поэтому EXISTS
лучше:
create view post_with_answers AS
SELECT DISTINCT pq.postid
FROM qa_posts pq
WHERE EXISTS (SELECT 1
FROM qa_posts pa
WHERE pq.postid = pa.parentid AND
pa.type = 'A'
)
WHERE pq.type = 'Q';