Вам необходимо объединить две таблицы в вашем запросе
SELECT *
FROM posts P
INNER JOIN categories C on C.post_id = P.id
WHERE C.category = 'politic'
Вы можете интуитивно (это не совсем технически правильное объяснение) рассматривать это объединение как добавление поля категории к строке в сообщениях с общим идентификатором (это 'on C.post_id = P.id'). Предложение WHERE указывает, что вам нужны только те строки, в которых категория является «политическим».
Внутреннее соединение - один из нескольких типов соединения. В частности, левое объединение является еще одним распространенным явлением, и его отличие в этой ситуации состоит в том, что строки записей без совпадения по категориям будут по-прежнему перечисляться, но с полями из категорий, равными нулю. (При внутреннем объединении таких строк не осталось бы)
http://en.wikipedia.org/wiki/Join_%28SQL%29