
25/06/2010, 19:22
|
| | Fecha de Ingreso: octubre-2008
Mensajes: 14
Antigüedad: 16 años, 5 meses Puntos: 0 | |
Ayuda con consulta SQL (mySQL) compleja Hola,
LLevo 2 días sin lograr esta consulta, podria alguien ayudarme por favor?
Simplificando un poco tengo 2 tablas, de trabajadoras y empleadores de la siguente estructura:
Tabla trabajadoras: idTrabajadora (llave principal), campos, etc.
Tabla empleadores: idEmpleador (llave principal), campos, etc.
Ahora bien en otra tengo los labores que desean realizar las trabajadoras con la sigiente estructura:
Tabla trabajadoras_labores: id_tl (llave principal), idTrabajadora, idLabor
Asi se forman algo como una coleccion de labores deseados por la trabajadora con la simple consulta "select * from trabajadoras_labores where idTrabajadora = $idTrabajadora"
De la misma manera tengo en otra tabla las labores que los empleadores requieren de una trabajadora:
Tabla empleadores_labores: id_el (llave principal), idEmpleador, idLabor
Y de igual manera puedo consultar todos los labores requeridos por un empleador con la consulta "select * from empleadores_labores where idEmpleador = $idEmpleador"
Bueno resumiendo:
una trabajadora puede tener 0 a n labores en su tabla de labores y
un empleador puede tener 0 a n labores en su propia tabla de labores
Se trata de hacer coincidir los labores de las trabajadoras con los labores de los empleadores (son los mismos pero las trabajadoras se ofrecen y los empleadores lo requieren) pero en las siguiente condicion:
quiero obtener todos los empleadores que cuyos TODOS los labores que requiere estan siendo ofrecidos por la trabadora, aunque ella puede ofrecerse a mas, o sea si una trabajadora se ofrece a A + B y el empleador requiere A, o B, o A + B, el empleador califica pero no calificaria si el empleador requiere A + B + C ya que el C no esta ofrecido por la trabajadora. Lo que se busca son los empleadores (0 a n) que califican para una determinada trabajadora
por ejemplo si yo tengo una trabajadora que se ofrece para las labores de niñera + cocina (tiene 2 labores en su tabla de labores) debo obtener todos los empleadores que necesitan una trabajadora para niñera, o para cocina, o para ñiñera + cocina, pero no califica por ejemplo para un empleador que requiere cocina + cuidado de anciano (auque ambos comparten la cocina)
por tal motivo trate de aislar grupos y ver si se incluyen de la siguiente forma pero no lo he conseguido, me salen compariaciones a nivel de registros de labores pero no de "grupos de labores "
mi consulta que no funciona:
SELECT idempleador FROM
( SELECT idEmpleador, idLabor FROM (
SELECT idEmpleador, idLabor
FROM ag_trabajadoras_labores_deseados
INNER JOIN ag_empleadores_labores_requeridos
USING ( idLabor )
WHERE idTrabajadora =64
) AS sub1
) AS sub2
WHERE idLabor IN (
SELECT idLabor
FROM `ag_trabajadoras_labores_deseados`
WHERE idTrabajadora =64
) group by idempleador
bueno la consulta no arroja error pero trata los labores de forma unitaria y no por grupos, he probado monton de variantes y siempre me da lo mismo, o sea no tengo el resultado que necesito
Alguna idea ?
Gracias
Última edición por javier4999; 25/06/2010 a las 19:35 |