Consulta Compleja

Consulta Compleja

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

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Consulta

Prueba 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

gracias 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

gracias 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 :)

bueno 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

Hola 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

  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><h2><pre>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

Image CAPTCHA
Enter the characters shown in the image.