Существуют различные способы решения этой проблемы, но я предпочитаю использовать левое соединение и поиск нулей. Другие способы включают использование NOT EXISTS с коррелированным подзапросом
SELECT id FROM r WHERE NOT EXISTS(
SELECT 1 FROM v WHERE v.rid = r.id
)
и использование MINUS для получения всего списка идентификаторов ресторанов за вычетом списка идентификаторов ресторанов, которые есть в таблице посещений
SELECT id FROM r
MINUS
SELECT rid FROM v
В этой форме, конечно, вам нужно будет выполнить объединение, если вы хотите получить больше данных из таблицы ресторанов
Это не исчерпывающий список. Ваш подход к левому соединению хорош и «не вызовет никаких проблем» (как вы думаете, они могут быть?)
Вам не нужно использовать отдельный; по характеру левого объединения строки, которые имеют нулевые посещения с правой стороны, будут все уникальными