SQL - Ayuda en query

 
Vista:

Ayuda en query

Publicado por jhoxan (4 intervenciones) el 24/09/2010 20:56:03
Buen dia amigos, tengo un inconveniente con un query.}

Explico:

Me pidieron sacar una info de varias tablas y hacer TXT. Y lo construi de esta manera:

select dato as nacionalidad, clave_unica ,descripcion,cuenta_deposito
from rel_trab_agr ,trabajadores,ins_depositos, rel_trab_ins_Dep,trabajadores_grales
where agrupacion = 'NACION'
and trabajadores_grales.sit_trabajador = 1
and ins_depositos.institucion_deposito = 'BME'
and trabajadores_grales.trabajador = rel_trab_agr.trabajador
and trabajadores.trabajador = trabajadores_grales.trabajador
and rel_trab_ins_dep.trabajador = rel_trab_agr.trabajador
and rel_trab_ins_dep.institucion_deposito = 'BME'

El detalle esta en que me falta un campo que se encuentra en la misma tabla (rel_trab_agr) que el primer campo del query (DATO) pero este otro campo que me falta va en la misma columna que se llama agrupacion y el filtro que necesito para encontrarlo es (TIPOCUENTA).

Quisiera que me ayudaran un poco con esto que de verdad no le doy la vuelta.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Ayuda en query

Publicado por Leonardo Josué (1173 intervenciones) el 24/09/2010 22:35:34
Hola jhoxan, traté de entender qué es lo que necesitas pero sinceramente no entendí nada, dices que te falta incluir un campo, pero no mencionas cuál es el problema, ¿la consulta te marca algún error?, ¿el resultado no es el esperado?, no entendí muy buen que tiene que ver DATO, AGRUPACION y TIPOCUENTA. ¿En cual de las tablas se encuentra el campo TIPOCUENTA? ¿Cómo está eso de que va en la misma columna de agrupación?

Te pido por favor que trates de explicar un poco mejor qué es lo que necesitas y de ser posible que pongas algunos datos de ejemplo. También te pediría que en tu post menciones qué manejador de Base de datos estás utilizando pues la sintaxis puede variar entre cada uno de ellos.

Otra cosa, veo que utilizas varias tablas y estas haciendo las uniones directamente en el WHERE, esto consume muchísimos recursos por lo que te recomendaría que utilizaras mejor la cláusula JOIN (si tienes dudas de cómo funciona busca en wikipedia). La consulta quedaría más o menos así:

SELECT dato as nacionalidad, clave_unica, descripcion,cuenta_deposito
FROM
rel_trab_agr
INNER JOIN trabajadores_grales ON
trabajadores_grales.trabajador = rel_trab_agr.trabajador
INNER JOIN trabajadores ON
trabajadores.trabajador = trabajadores_grales.trabajador
INNER JOIN rel_trab_ins_dep ON
rel_trab_ins_dep.trabajador = rel_trab_agr.trabajador
INNER JOIN ins_depositos ON
ins_depositos.institucion_deposito = rel_trab_ins_dep.institucion_deposito
WHERE
agrupacion = 'NACION'
and trabajadores_grales.sit_trabajador = 1
and ins_depositos.institucion_deposito = 'BME'

Saludos y espero tus comentarios.
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda en query

Publicado por jhoxan (4 intervenciones) el 24/09/2010 23:18:05
OK VAMOS A VER COMO EXPLICO ESTO.

TENGO QUE CONSTRUIR UN TXT CON LOS CAMPOS QUE ESTAN EN EL QUERY.

HASTA ESE PUNTO EL QUERY ME FUNCIONA BIEN Y ME TRAE LA INFO QUE SOLICITO. MI PROBLEMA ES QUE:

ME HACE FALTA UN CAMPO: ESTE CAMPO SE ENCUENTRA EN LA MISMA TABLA (rel_trab_agr)

EJEMPLO

TABLA rel_trab_agr
---------------------------------------------------------------------
COMPANIA - TRABAJADOR -AGRUPACION -DATO
----------------------------------------------------------------------
01 123 NACION V
01 123 TIPOCUENTA C
01 123 SEXO M

ESTOS SON LOS CAMPO DE MI TABLA. COMO VERAS EN MI QUERY YA ESTOY HACIENDO UN LLAMADO A UNO DE ESTOS CAMPOS (DATO) Y FILTRANDOLO POR LA AGRUPACION "NACION".

YO NECESITO ADICIONAL A ESE CAMPO QUE YA SE ESTA MOSTRANDO, LLAMAR AL MISMO CAMPO (DATO) PERO ESTA VEZ CON EL FILTRO DE "TIPOCUENTA"

EL QUERY ACTUALMENTE ME ESTA DEVOLVIENDO ESTE RESULTADO:

NACION CLAVE_UNICA INS_DEPOSITO CUENTA_DEP
E 84427 Banco Mercantil 0105003035103
E 82274 Banco Mercantil 0105063281163
E 82273 Banco Mercantil 0105003031103

Y NECESITO QUE EL RESULTADO SEA:

NACION CLAVE_UNICA INS_DEPOSITO CUENTA_DEP TIPO_CTA
E 84427 Banco Mercantil 0105003035103 C
E 82274 Banco Mercantil 0105063281163 A
E 82273 Banco Mercantil 0105003031103 C

ESPERO HABERME EXPLICADO. ESTOY USANDO SQL 2000.

GRS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Ayuda en query

Publicado por Leonardo Josué (1173 intervenciones) el 25/09/2010 00:12:29
mmm... Intenta con esto a ver si te funciona:

SELECT
RTA1.dato as nacionalidad,
clave_unica,
descripcion,
cuenta_deposito
RTA2.dato as tipoCuenta
FROM
rel_trab_agr RTA1
INNER JOIN rel_trab_agr RTA2
ON
RTA2.trabajador = RTA1.trabajador
INNER JOIN trabajadores_grales ON
trabajadores_grales.trabajador = RTA1.trabajador
INNER JOIN trabajadores ON
trabajadores.trabajador = trabajadores_grales.trabajador
INNER JOIN rel_trab_ins_dep ON
rel_trab_ins_dep.trabajador = rel_trab_agr.trabajador
INNER JOIN ins_depositos ON
ins_depositos.institucion_deposito = rel_trab_ins_dep.institucion_deposito
WHERE
RTA1.agrupacion = 'NACION' and
RTA2.agrupacion = 'TIPOCUENTA' and
trabajadores_grales.sit_trabajador = 1 and
ins_depositos.institucion_deposito = 'BME'

La idea es hace el join dos veces con la misma tabla, una para NACION y otra para TIPOCUENTA. Como verás el ejemplo lo hago con INNER JOIN, pero puedes hacerlo de la manera antigüa, sería cuestión de que lo adecues. Si continuas con problemas lo comenta en el foro.

Saludos.
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda en query

Publicado por jhoxan (4 intervenciones) el 27/09/2010 14:31:23
Buen dia mi pana ejecute el query que me sugeristes y me arrojo este error.

Server: Msg 170, Level 15, State 1, Line 6
Line 6: Incorrect syntax near '.'.

al darle doble clic para saber cual el la linea donde esta el error me sombreo esta:

RTA2.dato as tipoCuenta

Que pudiera ser???

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Ayuda en query

Publicado por Leonardo Josué (1173 intervenciones) el 27/09/2010 16:02:56
vaya Jhoxan, me preocupa de sobremanera que no encontraras el error que marca la consulta, la consulta es para que te des una idea y por lo tanto es susceptible de tener errores los cuales debes tratar de resolver. El error que marca es que falta una coma después de cuenta_deposito

Así esta:
cuenta_deposito
RTA2.dato as tipoCuenta

Así debería estar:
cuenta_deposito,
RTA2.dato as tipoCuenta

Mucho cuidado con estos detalles, no esperes que en el foro te del la respuesta sólo para copiar y pegar.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar