Работая, вы можете начать с вашего выбора. Не включайте столбцы, которые вы не хотите видеть в конечном итоге.
SELECT foo.fid, bar.value
Тогда мы можем выполнить предложение WHERE, которое можно увидеть так же, как вы его выразили.
SELECT foo.fid, bar.value
WHERE bar.zid = 30
Теперь самое сложное - соединить все вместе для нашего предложения FROM, используя LEFT JOINs, потому что мы хотим видеть каждый fid, есть ли промежуточные соответствия:
SELECT foo.fid, bar.value
FROM foo
LEFT JOIN foo2bar ON foo.fid = foo2bar.fid
LEFT JOIN bar ON foo2bar.bid = bar.bid
WHERE bar.zid = 30
OR bar.zid IS NULL