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

ORACLE comparar columnas entre 2 tablas

Estas en el tema de ORACLE comparar columnas entre 2 tablas en el foro de Oracle en Foros del Web. Hola... Soy nuevo en esto de manejar bases de datos, por necesidad en el trabajo, necesito trabajar con bases de datos en ORACLE. Tengo 10 ...
  #1 (permalink)  
Antiguo 11/08/2008, 16:20
 
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
ORACLE comparar columnas entre 2 tablas

Hola...

Soy nuevo en esto de manejar bases de datos, por necesidad en el trabajo, necesito trabajar con bases de datos en ORACLE.

Tengo 10 tablas "test" con 20 campos cada tabla, en estos campos se van guardando los resultados de un test, estos resultados necesito compararlos con otra tabla "aciertos" la cual tiene 20 campos con las respuestas correctas.

E logrado hacer la comparacion entre las tablas, pero solo de una respuesta, esto mediante un trigger, de esta forma tendria que hacer 20 triggers para comparar solo los resultados de una tabla y son 10 tablas. Quisiera saber como podria simplificar esto y hacerlo con un trigger, un cursor o un procedure, creo que en oracle se pueden crear objetos, sera necesario? no se de que forma simplificar todo esto.

Agradeceria mucho me pudieran ayudar a salir del paso.

Saludos y muchas gracias
  #2 (permalink)  
Antiguo 11/08/2008, 17:04
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: ORACLE comparar columnas entre 2 tablas

Que Tal,


En realidad no se como este el diseñado lo del test. A lo que yo entiendo es que tienes una tabla de respuestas
en donde me imagino que tienes como campos un identificador de test o algo así y luego una seríe de campos resp1, rep2 .. resp20
y luego otra muy similar pero solo que hay están las respuestas correctas no?


Si es así como lo estas manejando

Resultaría mejor hacerlo de la siguiente manera


CREATE TABLE PREGUNTAS( --LO QUE SE CONTESTO
ID_TEST NUMBER(10),
NUM_RESP NUMBER(3),
RESPUESTA VARCHAR2 O NUMBER)
/


CREATE TABLE REPUESTAS( -- LO CORRECTO
ID_TEST NUMBER(10),
NUM_RESP NUMBER(3),
RESPUESTA VARCHAR2 O NUMBER)
/



CON ESTO NO TENDRÍAS QUE COMPARAR 20 COLUMNAS CONTRA 20 COLUMNAS

SINO UNA CONTRA UNA.


SELECT P.ID_TEST, P.NUM_RESP, DECODE(R.RESPUESTA, P.RESPUESTA, 'REPUESTA CORRECTA', 'RESPUESTA INCORRECTA') AS RESULTADO
FROM PREGUNTAS P, REPUESTAS R
WHERE P.ID_TEST = R.ID_TEST
AND P.NUM_REP = R.NUM_RESP
/


Saludos.
  #3 (permalink)  
Antiguo 12/08/2008, 10:29
 
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: ORACLE comparar columnas entre 2 tablas

Hola.

Muchas garcias por la ayuda. Si me sirve pero aun busco algo mas, creo que no me explique muy bien. Tengo una tabla tes: id_test, id_aspirante,pregunta1, pregunta2,....,pregunta20. En cada registro se va a guradar las respuestas de cada aspirante, creo que de esta forma ocuparia mas campos pero menos filas. De la forma que me dices esta bien pero se crean muchas filas.

No se si este bien planteada mi idea de lo que quiero hacer, o si hay una mejor manera de hacerlo agradeceria mucho si me ayudaran.

Muchas gracias por la ayuda.
  #4 (permalink)  
Antiguo 12/08/2008, 15:00
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: ORACLE comparar columnas entre 2 tablas

Que Tal,

De hecho es mejor manejar 2 columnas en lugar de 20, en cuanto al número de renglones no te preocupes ocuparía
el mismo espacio en la base de datos que si fueran columnas, la ventaja es que es mucho más facíl manejar 2
columnas que 20, que es lo que actualmente te esta pasando. Ya que en determinado momento se volvería muy complejo
estar trabajando ccon procesos que afecten de la misma forma a las 20 columnas.

Saludos.
  #5 (permalink)  
Antiguo 13/08/2008, 13:58
 
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: ORACLE comparar columnas entre 2 tablas

hola...

Ok muchas gracias por la ayuda, me sirvio de mucho.

saludos...
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 21:55.