И так и по порядку:
Как сделать выборку статей зная категорию в которой она находится.
select b.* from 269816_blog b
where b.id in
(select cl.blog_id from 269816_categorylist cl where cl.category_id=1);
Где 1 - это номер категории, который
вы знаете.
Или
select b.* from 269816_blog b
where b.id in
(select cl.blog_id from 269816_categorylist cl
where cl.category_id=(select cat.id from 269816_category cat where cat.name=2001));
Где 2001 это
имя категории (у меня в базе на скорую руку числовые значения присвоены), которое вы тоже
знаете.
Так как выборка будет по primary ключам, то в вашей текущей задаче на скорости работы это ну никак не скажется.
Бонус
чтобы вывести все статьи из базы с указанием категорий, к которым они относятся, то можно использовать вот такой запрос:
select b.*, group_concat(c.id)
from
269816_blog b,
269816_category c,
269816_categorylist cl
where cl.category_id=c.id
and cl.blog_id=b.id
group by b.id
Выбираем статьи, затем указываем связь между категориями, и затем привязываем категории к статьям. В итоге получает вот такое:
Статья 1 у нас в 2х категориях:
Если в запросе изменить
group_concat(c.id)
на
group_concat(c.name)
, то результатом будут названия категорий.