2013-11-17 6 views
0

я получил таблицу, как это:Mysql - Выберите строки, которые имеют меньше, чем х «дочерние строки»

planet_id | planet_name 

1   | Test planet 
2   | Test planet 2 

Я получил вторую таблицу как этот

area_id | area_name | planet_id 
1   | test_area | 1 

мне нужен запрос на выборку к только выберите планеты, которые имеют менее 5 областей. Как мне это сделать?

+0

Должны ли быть включены планеты, у которых * нет областей *? –

+0

Да, также должны быть включены планеты без областей. –

ответ

0

Вы можете группировать планеты, соединенные областями и группами планет. вы можете затем использовать фильтр для фильтрации

select one.planet_id, one.planet_name 
from first_table one 
join second_table two 
on (one.planet_id = two.planet_id) 
group by one.planet_id, one.planet_id 
having count(two.area_id) < 5 
+2

«left join» лучше подходит, так как планеты с 0 областями также должны быть возвращены (на основе пояснения OP в комментариях к вопросу). –

+0

Спасибо за ваш комментарий Andriy, я использую заявление Бретта с левым соединением сейчас, и он отлично работает. –

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