Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta sql (https://www.clubdelphi.com/foros/showthread.php?t=8323)

ebeltete 17-03-2004 19:25:05

consulta sql
 
Tengo una tabla clientes.dbf con varios campos, entre ellos: cl_depto, cl_zona, cl_giro, por otra parte tengo una tabla clases.dbf con tres campos cs_codigo, vc_codigo, vc_nombre; en el campo cs_codigo existen tres tipos de registros: ZONA, GIRO, DEPT.
Se tienen que cumplir:

en clientes cl_depto=vc_codigo de clases y cs_codigo='DEPT'
en clientes cl_giro =vc_codigo de clases y cs_codigo='GIRO'
en clientes cl_zona =vc_codigo de clases y cs_codigo='ZONA'

ahora como hago para hacer una consulta que me devuelva todos los registros de clientes con el campo vc_nombre de clases asociado a los campos de clientes antes mencionado.
Tal vez quedo media entreverada la pregunta?, gracias.
Uso un Query con Delphi 5.

Ejemplo del resultado de la consulta

clientes.dbf: registro1= (nombre='MARTIN', cl_zona=2, cl_giro=2, cl_dept=5)

clases.dbf: registro1= (cs_codigo='ZONA',vc_codigo=2,vc_nombre='PUERTO')
registro2= (cs_codigo='GIRO',vc_codigo=2,vc_nombre='TIENDA')
registro3= (cs_codigo='DEPT',vc_codigo=5,vc_nombre='MENDOZA')

EL RESULTADO= (MARTIN, PUERTO, TIENDA, MENDOZA)

jachguate 17-03-2004 20:17:29

Te sugiero evaluar el utilizar una tabla diferente para cada tipo de "clase".. es decir, no es mejor tener las tablas zona.dbf, giro.dbf y dept.dbf... que sentido tiene tener todo en una sola tabla???

De cualquier forma, podes hacer un inner join con tres instancias de la misma tabla, filtrando cada instancia según el "uso" que le des.. es decir, una vez para zonas, otra para giros y otra para departamentos.

Hasta luego.

;)

ebeltete 18-03-2004 19:43:50

Gracias Juan, el tema es que estoy haciendo la consulta en una base de datos existente, y no logro dar con la consulta usando inner join, es mucha molestia que me tires una lineas?
gracias

jachguate 18-03-2004 22:57:02

ahi va un ejemplo con dos clases...

Código:

select a.campo1, b.campo2, c.campo2
  from tabla1 a inner join tabla2 b on a.campo2 = b.campo1 and b.campo2 = 'CLASE1'
                  inner join tabla3 c on c.campo3 = b.campo1 and b.campo2 = 'CLASE2'

Como podes ver, se usa una instancia de la tabla para la clase1 y otra instancia de la tabla para la clase2.

Hasta luego.

;)

ebeltete 19-03-2004 04:07:17

Gracias maestro, estaba boleado.
Otra consulta, estoy usando updatesql, funciona bien pero cuando estoy modificando un registro tengo un problema, el tema es que modifico un registro de un campo de la tabla y le doy applyupdates y lo modifica, voy a otro registro en el mismo campo hago lo mismo y lo modifica pero si vuelvo para modificar el anterior me aparece el mensaje "UPDATE FAILED" el tema es raro, pues si cierro y abro el query puedo volver a modificarlos.

jachguate 19-03-2004 07:52:37

Hola ebeltete.

Te recomiendo la lecutra de la guía de estilo de los foros. Veo que no sos tan nuevo por aqui, y es de esperar que a estas alturas comprendas bien su contenido. En esta ocasión, lo propio es habrir una nuevo hilo para tu nueva pregunta.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 06:24:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi