Título: Como hacer esta consulta mysql desde php? Publicado por: dyhsoluciones en 16 Junio 2012, 22:00 pm Tengo estas tablas:
TABLA: contenido id TABLA: imagenes id TABLA DE RELACION: contenido_x_imagenes idContenido idImagen Una variable (trabajo en php): $id. La variable $id contiene el ID de un elemento de la tabla contenido. (seria como el id de una noticia). EL PROBLEMA: Recuperar TODAS las imagenes de la tabla "imagenes", pero, ordenandolas de tal forma, que las imagenes que esten relacionadas con "$id" en la tabla de relaciones contenido_x_imagenes salgan primeras. Importante: hay imagenes, es decir, "ids" de imagenes que apareceran mas de una ves en la tabla "contenido_x_imagenes", ya que una imagen puede estar relacionada a diferentes contenidos. Solo se debe mostrar esa imagen una vez. Y tambien hay imagenes que NO estan en la tabla de relacion "contenido_x_imagenes". Estas imagenes tambien tienen que mostrarse. Lo que hize fue esto, que funciona muy bien, pero si la imagen esta repedita en la tabla "contenido_x_imagenes", me la muestra repetida en el listado, me faltaria filtrarlo: SUPONGAMOS QUE $id = 2. Código: // cxi.idContenido lo uso para saber si esta en la tabla de relacion o no... Lo que no termino de entender, es esta porsion de codigo: Código: ORDER BY IF (cxi.idContenido = 2, 1, 2) MIl gracias por esta gran comunidad. Título: Re: Como hacer esta consulta mysql desde php? Publicado por: Yoghurt en 14 Julio 2012, 04:02 am "ORDER BY IF (cxi.idContenido = 2, 1, 2)"
Me parece que ese trozo de codigo es condicional; ORDENAR POR... SI (cxi.idContenido = 2, parte verdadera, parte falsa) Leí la sintaxis en http://dev.mysql.com/doc/refman/4.1/en/select.html pero no puedo probar o experimentar las condiciones y operadores para una consulta (no tengo mysql aun) asi que lealo ;) Lo otro seria que tu mismo eliminaras las imagenes repetidas que traiga la consulta MySql, tal vez mysql no puede hacer todo el trabajo. Y para agregar las imagenes que no estén en la consulta, haz una nueva consulta para obtenerlas ¬¬ pero usa LIMIT en la consulta para que no te llenes de imagenes. |