Mira, no se ve cual es el problema que tienes, porque obtener el listado de los empleados que tienen experiencia en determinadas fábricas, con esas tres tablas es bastante elemental.
Usando INNER JOIN, y considerando que la tabla
experiencias_trabajador contiene la relación entre los empleados y las fábricas, la sentencia que devuelve el listado completo sería más o menos así:
Esta forma no discrimina nada y devuelve eventualmente, nombres repetidos de los trabajadores que se desempeñaron en más de una fábrica.
Para sólo recuperar los nombres, sería:
A esta sentencia
se le debe agregar o una subconsulta o bien un listado, en ambos casos usando la cláusula IN(), a fin de recuperar solamente aquellos que hayan trabajado efectivamente en una fábrica determinada:
o bien:
Siendo que
listadecodigos sería un listado de los ID de las fábricas (un ID al menos) de las que se desea saber los empleados, y
condiciones las condiciones a cumplir para seleccionar un conjunto de IDs.
El resultado de ambos sería idéntico, pero la forma de realizar la lectura de datos varía.