Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/04/2009, 13:03
Avatar de Carxl
Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 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