Finalmente lo he solucionado usando joins y combinando los in y el having tal que:
Código MySQL:
Ver original`tiposCocina_tiposCocina` ON (`t`.
`id`=`tiposCocina_tiposCocina`.
`restaurantes_id`) LEFT OUTER JOIN `tiposCocina` `tiposCocina` ON (`tiposCocina`.
`id`=`tiposCocina_tiposCocina`.
`tiposCocina_id`) LEFT OUTER JOIN `serviciosrestaurantes` `servicios_servicios` ON (`t`.
`id`=`servicios_servicios`.
`restaurantes_id`) LEFT OUTER JOIN `servicios` `servicios` ON (`servicios`.
`id`=`servicios_servicios`.
`servicios_id`) WHERE (
Y funciona, por ultimo necesito tambien filtar por otra tabla más, esta tabla es disponibilidad y tiene un relacion 1 a n con restaurantes, es decir un restaurante puede tener una o más disponibilidades pero una disponibilidad es unica y exclusiva de un restaurante. He probado diversos joins pero no se cual es el correcto ni donde, donde lo pondrian ustedes?
Gracias!!