Как составить SQl запрос?
Удалите из таблицы поле `id` и сделайте первичным ключом пару (`cat_id`, `restaurant_id`), ведь дублей таких пар быть не должно. Тогда запрос можно будет упроститьSELECT `restaurant_id`
  FROM `restaurants_category`
  WHERE `cat_id` IN (1, 2)
  GROUP BY `restaurant_id`
  HAVING COUNT(*) = 2
Выбирает те, что имеют более одной категории.
Это??? Или я неправильно понял вопрос?SELECT COUNT(*) AS `count`, `restaurant_id` FROM `restaurants_category` as `r` GROUP BY `restaurant_id` HAVING COUNT(*) > 1