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

Se podrá hacer este tipo de relación?

Estas en el tema de Se podrá hacer este tipo de relación? en el foro de PostgreSQL en Foros del Web. Hola a todos, cómo van? Tengo una duda de como realizar un select... Trataré de ser lo mas explícito posible: Digamos que tenemos 2 tablas ...
  #1 (permalink)  
Antiguo 20/04/2009, 13:03
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Pregunta Se podrá hacer este tipo de relación?

Hola a todos, cómo van?

Tengo una duda de como realizar un select... Trataré de ser lo mas explícito posible:

Digamos que tenemos 2 tablas novedades y usuarios:

novedades (id_novedad, fecha_novedad, usuario_novedad, tipo_novedad)
usuarios (id_usuario, usuario_usuario, fecha_usuario, perfil_usuario)

Hago el select para traer las respectivas novedades hechas por el usuario (digamos que es así xD):
Código sql:
Ver original
  1. SELECT * FROM novedades, usuarios WHERE usuario_novedad=id_usuario ORDER BY nov_id DESC;

Ahí me traerá todas las novedades con sus respectivos usuarios ordenados del mas reciente a la mas antigua

Todo bien hasta ahí... viene el enredo :(

Ahora resulta que las novedades tiene tablas detalles (varias). Esto depende del campo "tipo_novedad" en la tabla novedades. Si el campo "tipo_novedad" es 1, toca hacer el join con una tabla llamada "detalle_paut". Si el campo "tipo_novedad" es 2, toca hacer el join con una tabla llamada "detalle_prod". Si el campo "tipo_novedad" es 3, toca hacer el join con los dos tablas anteriores (detalle_paut, detalle_prod).

Como está actualmente el sistema, lo que se hace es hacer una consulta gral. que traiga todas las novedades con su usuario (como la que mostré arriba) y mediante un lenguaje, hacer un ciclo y estar preguntando: si es 1, haga consulta para paut, si es 2 haga consulta para prod, si es 3, haga una consulta con las 2 tablas.

Yo creo que esa no es la mejor manera de hacerlo... me parece que lleva muchos recursos y creería que por base de datos directamente se podría.

Me preguntaba si habrá una manera para poder unir esas tres consultas en una sola?? Es mejor hacer una sola consulta?? Se puede?

Gracias de antemano
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #2 (permalink)  
Antiguo 27/04/2009, 06:51
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Se podrá hacer este tipo de relación?

Buenas carxl,
pruea a jacer un join con todas las tablas que necesites y luego juegas con el CASE WHEN en el SELECT.

select novedades.*, CASE tipo_novedad WHEN 1 THEN detalle_paut.campo WHEN 2 THEN tipo_novedad.campo
etc


Cuando funcione, puedes acoter los joins con condiciones multiples... si te resulta muy pesada la consulta

Salu2
  #3 (permalink)  
Antiguo 27/04/2009, 08:25
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: Se podrá hacer este tipo de relación?

Hola seyko, cómo vas? Gracias por tu respuesta!!!

Me pondré a probar lo que me dices a ver que tal va...

De nuevo gracias

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
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 17:14.