Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta SQL

Estas en el tema de Consulta SQL en el foro de Bases de Datos General en Foros del Web. Hola a todos: tengo 3 tablas, Clientes, Obra, Contratos tabla Clientes Código: n1 = numero_obra1 n2 = numero_obra2 n3 = numero_obra3 n4 = numero_obra4 id_cliente ...
  #1 (permalink)  
Antiguo 06/01/2012, 18:48
 
Fecha de Ingreso: septiembre-2009
Mensajes: 108
Antigüedad: 14 años, 7 meses
Puntos: 1
Consulta SQL

Hola a todos: tengo 3 tablas, Clientes, Obra, Contratos

tabla Clientes
Código:
n1 = numero_obra1
n2 = numero_obra2
n3 = numero_obra3
n4 = numero_obra4

id_cliente  | id_obra1 | n1 | id_obra2 | n2 | id_obra3 | n3 | id_obra4 | n4 |
1           |22        |14  |24        |2   |          |    |          |    |
2           |57        |5   |13        |87  |54        |12  |          |    |
Tabla Obra
Código:
id_obra | nombre
22      | Azul
24      | Rojo
Tabla Contratos
Código:
id_contrato | id_cliente | obra_paciente
1           | 1          | 22
2           | 1          | 24
3           | 2          | 54

el tema viene asi, a ver si me puedo explicar

Necesito poder hacer una consulta a Contratos, y que este me traiga segun el id_contrato el n1, o n2 o n3 o el n4, de la tabla paciente, y estos dependen de que obra use en el contrato

Ejemplo

Si llamo al contrato id_contrato 1, este el id_cliente = 1, obra_paciente = 22, y por lo tanto tendria que enviarme el valor de n2 (Tabla Paciente)

En Limpio

id_contrato = 1
id_cliente = 1
obra_paciente = 22
NUMERO = 2

Como veran el cliente puede tener hasta 4 obras, por lo que necesito traer el numero_obra X dependiendo de la obra que este usando

Como podria hacer dicha consulta
  #2 (permalink)  
Antiguo 07/01/2012, 13:26
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Consulta SQL

Holas,

Me parece que lo que desea es, que:

Si los datos son:

id_contrato = 1
id_cliente = 1
obra_paciente = 22

Debe de retornar: 14, porque el obra_paciente es 22 y id_obra1 es 22.

Si los datos son:

id_contrato = 1
id_cliente = 1
obra_paciente = 24

Debe de retornar: 2 , ya que obra_paciente es 24 y id_obra2 es 24.


Nos confirmas si es asi realmente, o no entendi mucho.

Saludos
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 07/01/2012, 15:50
 
Fecha de Ingreso: septiembre-2009
Mensajes: 108
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Consulta SQL

Si, perdon, debe de retornar 14, fue una confucion mia

Estoy usando access 2003

id_contrato = 2
id_cliente = 1
obra_paciente = 24
Debe retornar : 2

Como dices

Muchas Gracias
  #4 (permalink)  
Antiguo 07/01/2012, 17:47
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Consulta SQL

No manejo mucho access pero como SQL Standar podrias probarlo:
Código SQL:
Ver original
  1. SELECT
  2.     c.n
  3. FROM
  4.     contratos,
  5.     clientes,  
  6.     (
  7.         SELECT id_cliente, id_obra1 AS id_obra, n1 AS n FROM clientes UNION ALL
  8.         SELECT id_cliente, id_obra2 AS id_obra, n2 AS n FROM clientes  UNION ALL
  9.         SELECT id_cliente, id_obra3 AS id_obra, n3 AS n FROM clientes  UNION ALL
  10.         SELECT id_cliente, id_obra4 AS id_obra, n4 AS n FROM clientes
  11.     ) AS c
  12.  
  13. WHERE
  14.     contratos.id_cliente = clientes.id_cliente AND     
  15.     c.id_obra = contratos.obra_paciente AND
  16.     contratos.id_contrato=1 AND
  17.     contratos.id_cliente = 1  AND
  18.     contratos.obra_paciente = 22;


Saludos
__________________
.: Gildus :.
  #5 (permalink)  
Antiguo 07/01/2012, 20:30
 
Fecha de Ingreso: septiembre-2009
Mensajes: 108
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Consulta SQL

Hola Gildus:
Muchas Gracias por tu tiempo, pero me da error en la sintaxis FROM

ese es el error que me da el visual basic 6
  #6 (permalink)  
Antiguo 07/01/2012, 23:06
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: Consulta SQL

Trata de crearlos primero en el access, y luego haz correr el sql, no domino ni menos uso mucho access, el sql que te pase lo ejecute en MySQL.

Saludos
__________________
.: Gildus :.

Etiquetas: sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:55.