2010-08-16 3 views
0

Я пытаюсь найти количество строк для двух таблиц: Пример 1 возвращает 81 (что неверно).Mysql num rows на нескольких таблицах с использованием UNION

SELECT p_id FROM j_posts 
INNER JOIN j_blogs ON p_blog_id = b_id && b_approved = 1 
WHERE p_is_draft = 0 
UNION SELECT ep_id FROM j_external_posts 
INNER JOIN j_blogs ON ep_blog_id = b_id && b_approved = 1 

Я тогда попытался разбить запрос на два:

SELECT ep_id FROM j_external_posts INNER JOIN j_blogs ON ep_blog_id = b_id 
&& b_approved = 1 

Первая часть запроса возвращает 70, а второй возвращает 39. Это нужное количество строк.

SELECT p_id FROM j_posts INNER JOIN j_blogs ON p_blog_id = b_id 
&& b_approved = 1 WHERE p_is_draft = 0 

Что я делаю неправильно в примере 1? Он должен вернуть 109 вместо 81.

Заранее спасибо

ответ

2

Использование UNION ALL, UNION будет возвращать различные строки

+0

благодаря Мате! : B – AgelessEssence

0

Я думаю, что вы должны сказать «UNION ALL» вместо UNION.
UNION делает неявные DISTINCT так же значения отображаются только один раз ..

Смежные вопросы