Una tabla para las categorias, otra para los objetos y otra que contenga las correspondientes relaciones.
El problema me surge cuando quiero ver los objetos de una determinada categoria, tengo hechas dos consultas distintas que, aparentemente, devuelven lo mismo, pero son muy distintas, supongo que una es mas eficiente que la otra, quisiera saber si me pueden decir cuál es.
Los objetos que mencioné son programas.
Código:
"select pro.titulo as nombre, relacion.catTitulo as catTitulo, relacion.catNicename as catNicename, pro.nicename as nicename, pro.descrCorta as descrCorta, pro.licencia as licencia from (select cat.titulo as catTitulo, cat.nicename as catNicename, rel.idPrograma as proId from (select idPrograma, idCategoria from $tablaRelacion where idCategoria = [id de la categoria]) as rel join $tablaCategorias as cat where rel.idCategoria = cat.idCat) as relacion join $tablaProgramas as pro where relacion.proId = pro.idPrograma;"
Código:
Creo que no hace falta que les explique las diferencias, en el 1er caso fui creando tablas "auxiliares" y las fui uniendo; en la segunda (la cual la encontre en internet), aparentemente lo que hace es un join entre 3 tablas (si no me equivoco) y luego pone las condiciones. La 2da opción parece más elegante, pero imagino que carga bastante al servidor, qué les parece?"SELECT pro.titulo as nombre, cat.titulo as catTitulo, cat.nicename as catNicename, pro.nicename as nicename, pro.descrCorta as descrCorta, pro.licencia as licencia FROM $tablaRelacion as rel, $tablaProgramas as pro, $tablaCategorias as cat WHERE rel.idCategoria = cat.idCat AND cat.idCat = [id de la categoria] AND pro.idPrograma = rel.idPrograma GROUP BY pro.idPrograma;"
Conocen alguna forma más eficiente de hacer esto?
Muchas gracias
