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

Consulta a 3 tablas y algo más

Estas en el tema de Consulta a 3 tablas y algo más en el foro de Bases de Datos General en Foros del Web. Holas! Llevo casi 2 horas tratando de resolver mi problema y solo no me la puedo Tengo 3 tablas: OrdenTrabajo, Usuarios, Bitácora. Un usuario llama ...
  #1 (permalink)  
Antiguo 28/09/2010, 09:53
Avatar de lukos  
Fecha de Ingreso: enero-2008
Ubicación: ikikin
Mensajes: 22
Antigüedad: 16 años, 10 meses
Puntos: 0
Consulta a 3 tablas y algo más

Holas! Llevo casi 2 horas tratando de resolver mi problema y solo no me la puedo
Tengo 3 tablas: OrdenTrabajo, Usuarios, Bitácora.
Un usuario llama al técnico, por algún problema que tenga. Y el técnico busca soluciones para resolver el problema del usuario.

En la tabla orden, tengo:
Código SQL:
Ver original
  1. CREATE TABLE ordentrabajo
  2. (
  3.   ord_pk_id INTEGER NOT NULL,
  4.   ord_fk_usuario INTEGER NOT NULL,
  5.   ord_requerimiento CHARACTER VARYING(20) NOT NULL,
  6.   ord_descripcion text,
  7.   ord_observacion text,
  8.   ord_archivo CHARACTER VARYING(100),
  9.   ord_estado INTEGER NOT NULL,
  10.   ord_fecha_c DATE NOT NULL,
  11.   ord_fecha_t DATE NOT NULL,
  12.   ord_fk_tecnico CHARACTER VARYING(20) NOT NULL,
  13.   ord_prioridad CHARACTER VARYING(20) NOT NULL,
  14.   CONSTRAINT ord_pk PRIMARY KEY (ord_pk_id),
  15.   CONSTRAINT ord_rut FOREIGN KEY (ord_fk_usuario)
  16.       REFERENCES usuarios (usu_pk_id) MATCH SIMPLE
  17.       ON UPDATE NO ACTION ON DELETE NO ACTION,
  18.   CONSTRAINT ord_tecnico FOREIGN KEY (ord_fk_tecnico)
  19.       REFERENCES tecnico (tec_username) MATCH SIMPLE
  20.       ON UPDATE NO ACTION ON DELETE NO ACTION
  21. )
En la tabla usuario, tengo solo datos menores (por lo que no lo adjunto ), y solo requiero el nombre y correo de la persona.

Hasta aquí todo bien. Necesito ver ciertos datos de las órdenes finalizadas (ord_estado = 2) y algunos de los usuarios. La Sentencia que ocupo es la siguiente:
Código SQL:
Ver original
  1. SELECT
  2.   o.ord_pk_id AS "Id",
  3.   u.usu_nombre AS "Nombre",
  4.   u.usu_apellido AS "Apellido",
  5.   u.usu_correo AS "Correo",
  6.   o.ord_requerimiento AS "Requerimiento",
  7.   o.ord_descripcion AS "Descripcion",
  8.   o.ord_fecha_c AS "Fecha Inicio",
  9.   o.ord_fk_tecnico AS "Tecnico"
  10. FROM
  11.   public.ordentrabajo AS o,
  12.   public.usuarios AS u
  13. WHERE
  14.   o.ord_fk_usuario = u.usu_pk_id AND
  15.   o.ord_estado = 2;
Me devuelve algo como esto:
Código HTML:
43;"Mario";"Cares";"[email protected]";"Enlace";"No tiene conexion a internet";"2010-09-28";"juanito.peres"
El problema comienza ahora... Necesito además ver cómo se solucionó el problema, quién lo finalizó, y en qué fecha.
Para eso, voy a la tabla Bitacora:
Código SQL:
Ver original
  1. CREATE TABLE bitacora
  2. (
  3.   bit_pk_id INTEGER NOT NULL,
  4.   bit_fk_orden INTEGER NOT NULL,
  5.   bit_atencion CHARACTER VARYING(30) NOT NULL,
  6.   bit_archivo CHARACTER VARYING(100),
  7.   bit_actividad text NOT NULL,
  8.   bit_fecha DATE NOT NULL,
  9.   bit_fk_tecnico CHARACTER VARYING(20) NOT NULL,
  10.   CONSTRAINT bit_pk PRIMARY KEY (bit_pk_id),
  11.   CONSTRAINT bit_fk_orden FOREIGN KEY (bit_fk_orden)
  12.       REFERENCES ordentrabajo (ord_pk_id) MATCH SIMPLE
  13.       ON UPDATE NO ACTION ON DELETE NO ACTION,
  14.   CONSTRAINT bit_fk_tecnico FOREIGN KEY (bit_fk_tecnico)
  15.       REFERENCES tecnico (tec_username) MATCH SIMPLE
  16.       ON UPDATE NO ACTION ON DELETE NO ACTION
  17. )
En teoría, necesito hacer algo como
Código SQL:
Ver original
  1. SELECT
  2.   b.bit_actividad,
  3.   b.bit_fecha,
  4.   b.bit_fk_tecnico
  5. FROM
  6.   public.bitacora AS b,
  7.   public.ordentrabajo AS o
  8. WHERE
  9.   b.bit_fk_orden = o.ord_pk_id AND
  10.   o.ord_estado = 2 AND
  11.   b.bit_fk_orden = 43;
Y obtengo
Código HTML:
"Ping al usuario";"2010-09-28";"smarquez"
"Cable desconectado";"2010-09-28";"smarquez"
El último registro es la solución, por lo que un
Código:
ORDER BY bit_pk_id DESC LIMIT 1;
Soluciona esa parte.

El problema llega al momento de juntarlos y responder todo lo que necesito.

No creo que la mejor solución sea realizar las 2 consultas separadas, pero mientras no descubra como hacerlo, ps no hay de otra.

Gracias por adelantado
  #2 (permalink)  
Antiguo 30/09/2010, 07:51
Avatar de lukos  
Fecha de Ingreso: enero-2008
Ubicación: ikikin
Mensajes: 22
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Consulta a 3 tablas y algo más

BUMP!
Creo que no hay forma de hacer esto :(

Gracias por las 64 lecturas ;)

Etiquetas: tablas
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 23:17.