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 originalCREATE TABLE ordentrabajo
(
ord_pk_id INTEGER NOT NULL,
ord_fk_usuario INTEGER NOT NULL,
ord_requerimiento CHARACTER VARYING(20) NOT NULL,
ord_descripcion text,
ord_observacion text,
ord_archivo CHARACTER VARYING(100),
ord_estado INTEGER NOT NULL,
ord_fecha_c DATE NOT NULL,
ord_fecha_t DATE NOT NULL,
ord_fk_tecnico CHARACTER VARYING(20) NOT NULL,
ord_prioridad CHARACTER VARYING(20) NOT NULL,
CONSTRAINT ord_pk PRIMARY KEY (ord_pk_id),
CONSTRAINT ord_rut FOREIGN KEY (ord_fk_usuario)
REFERENCES usuarios (usu_pk_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT ord_tecnico FOREIGN KEY (ord_fk_tecnico)
REFERENCES tecnico (tec_username) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
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 originalSELECT
o.ord_pk_id AS "Id",
u.usu_nombre AS "Nombre",
u.usu_apellido AS "Apellido",
u.usu_correo AS "Correo",
o.ord_requerimiento AS "Requerimiento",
o.ord_descripcion AS "Descripcion",
o.ord_fecha_c AS "Fecha Inicio",
o.ord_fk_tecnico AS "Tecnico"
FROM
public.ordentrabajo AS o,
public.usuarios AS u
WHERE
o.ord_fk_usuario = u.usu_pk_id AND
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 originalCREATE TABLE bitacora
(
bit_pk_id INTEGER NOT NULL,
bit_fk_orden INTEGER NOT NULL,
bit_atencion CHARACTER VARYING(30) NOT NULL,
bit_archivo CHARACTER VARYING(100),
bit_actividad text NOT NULL,
bit_fecha DATE NOT NULL,
bit_fk_tecnico CHARACTER VARYING(20) NOT NULL,
CONSTRAINT bit_pk PRIMARY KEY (bit_pk_id),
CONSTRAINT bit_fk_orden FOREIGN KEY (bit_fk_orden)
REFERENCES ordentrabajo (ord_pk_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT bit_fk_tecnico FOREIGN KEY (bit_fk_tecnico)
REFERENCES tecnico (tec_username) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
En teoría, necesito hacer algo como
Código SQL:
Ver originalSELECT
b.bit_actividad,
b.bit_fecha,
b.bit_fk_tecnico
FROM
public.bitacora AS b,
public.ordentrabajo AS o
WHERE
b.bit_fk_orden = o.ord_pk_id AND
o.ord_estado = 2 AND
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