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
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