Buenas necesito ayuda comunida tengo que hacer una consulta compleja ya que le mando de parametro a la consulta el nombre del empleado que deseo recobrar la informacion entonces en mi db tengo 3 tablas la cual la principal es empleado en la cual estan todas las referencias personales de el la 2 tabla tengo empleados_eventuales que tiene las horas que el empleado trabaja y a cuanto se le paga por hora y la 3 tabla es empleados_permanentes donde tengo el sueldo de ese empleado las 3 tablas estan enlazadas por el codigo del empleado. entonces lo que quiero hacer es que busco el empleado en base a su nombre con un like porque lo voy filtrando en base a cada letra y luego cuando encuentre uno pues retorno la informacion todos los datos personales como la informacion si es empleado_eventual retorne tambien su pago xhora y las horas que trabaja, y si es lo contrario que retorne su sueldo.
alguna sugerencia ?
El problema lo trate de resolver con consultas anidades pero no logro resolverlo esto es lo que he realizado hasta el momento.
select *
from empleados_eventuales
where EXISTS (select * from empleados
WHERE not exists (select empleados_permanentes.id_empleado,empleados_permanentes.sueldo
from empleados_permanentes
where empleados_permanentes.id_empleado IN (SELECT ALL empleados.id_empleado FROM empleados where empleados.nombre LIKE '%juan%' GROUP BY empleados.id_empleado) ) )
la idea es que la primera me devuelve el id_empleado del empleado en base al filtro like una vez teniendo ese id_empleado lo quiero comparar si es id_pertenece a la tabla de empleados_permanentes hasta aqui bien ya que en el caso de ese empleado encuentra y devuelve la informacion pero en el caso que no devuelva nada ya no furula mi sql apezar que le he agregado un exists por si no retorna nada que bussque en la siguiente tabla bueno espero su ayuda gracias.
las estructuras de las tablas es la siguiente
empleados
id_empleado
nombre
sexo
direccion
ciudad
telefono
porgrama
departamento
municipio
empleados_eventuales
id_empleado
pago_hora
precio_hora
empleados_permanentes
id_empleado
sueldo
Consulta
Lun, 14/06/2010 - 16:56 — joyasanPrueba así:
SELECT *,
(select empleados_eventuales.pago_hora from empleados_eventuales
where empleados_eventuales.id_empleado=empleados.id_empleado) as pago_hora,
(select empleados_permanentes.sueldo from empleados_permanentes
where empleados_permanentes.id_empleado=empleados.id_empleado) as sueldo
FROM empleados
where empleados.nombre LIKE '%juan%'
Order BY empleados.id_nombre
Avisa como va?
gracias no me funciona
Mié, 16/06/2010 - 21:47 — Anónimogracias tenia unos errores pero no mas eran en los nombres de los campos :) eres la mera en salsa con sql :) y funciona bien solo que hay algo que no se si estare mal y creo que solo con plgpsql se puede y es que bueno hay que calcular el sueldo para los que son empleados eventuales porque el sueldo esta predefinido solo para los empleados permanentes entonces quiero ponerle una condicion que si el sueldo queda vacio es porque son empleados eventuales los que devuelve y entonces tendria que tomar el campo sueldo de la tabla empleados permanentes porque asi como esta el sql devuelve los sueldos solo cuando el nombre del empleado que se busca es de la tabla empleado permanente alguna ayudadita ?
Perdon el titulo esta mal jeje si funciona
Mié, 16/06/2010 - 21:48 — Anónimogracias tenia unos errores pero no mas eran en los nombres de los campos :) eres la mera en salsa con sql :) y funciona bien solo que hay algo que no se si estare mal y creo que solo con plgpsql se puede y es que bueno hay que calcular el sueldo para los que son empleados eventuales porque el sueldo esta predefinido solo para los empleados permanentes entonces quiero ponerle una condicion que si el sueldo queda vacio es porque son empleados eventuales los que devuelve y entonces tendria que tomar el campo sueldo de la tabla empleados permanentes porque asi como esta el sql devuelve los sueldos solo cuando el nombre del empleado que se busca es de la tabla empleado permanente alguna ayudadita ?
ya ta solucionado :)
Jue, 17/06/2010 - 00:29 — Anónimobueno ya lo arregle el problema queria ocupar plpgsql pero ni modo ya lo solucione cuando el campo sueldo es null significa que es de la otra tabla entonces calculo el dato en base a las otras columnas y ese pongo en mi table y visebersa si es lo contrario gracias por todo :)
Funciones de cadena de caracteres
Mar, 22/06/2010 - 17:57 — AnónimoHola Foro, ando buscando información sobre como obtener de una cadena de caracteres una salida como la que muestro a continuación... me han dicho que es con el uso de una función llamada algo asi como stream snow ball... pero he estado buscando y no encuentro nada. Podria alguien ayudarme?
El siguiente es mi string original:
FABRICACION DE HERRAMIENTAS DE MANO METALICAS SIN MOTOR
Le aplico una función que he programado para hacerle algunos cambios, y dejo algo asi:
FABRIKASION ERRAMIENTAS MANO METALIKAS MOTOR
luego un compañero le corre algo que deja una salida como esta:
'332211':1 'erramient':3 'fabrikasion':2 'man':4 'metalik':5 'motor':6
Mi problema es que no encuentro como es que lo hace,me ha mencionado una función llamada algo asi como stream snow ball o algo de psvector... pero he estado buscando y no he corrido con suerte... alguien podria yudarme?
Enviar nuevo comentario