Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/06/2012, 14:34
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Como hago esta consulta MYSQL desde PHP

Hola ebalmaceda:

¿Qué pasaría cuando una misma imagen esté incluida en más de un contenido?, es decir, supongamos que tienes la siguiente información en tus tablas:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM contenido;
  2. +-------------+-------------+
  3. | idContenido | descripcion |
  4. +-------------+-------------+
  5. |           1 | Cont 1      |
  6. |           2 | Cont 2      |
  7. +-------------+-------------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. mysql> SELECT * FROM imagenes;
  11. +----------+-------------+
  12. | idImagen | descripcion |
  13. +----------+-------------+
  14. |        1 | Img 1       |
  15. |        2 | Img 2       |
  16. |        3 | Img 3       |
  17. |        4 | Img 4       |
  18. +----------+-------------+
  19. 4 rows in set (0.00 sec)
  20.  
  21. mysql> SELECT * FROM contenido_x_imagenes;
  22. +-------------+----------+
  23. | idContenido | idImagen |
  24. +-------------+----------+
  25. |           1 |        4 |
  26. |           1 |        1 |
  27. |           1 |        3 |
  28. |           1 |        2 |
  29. |           2 |        4 |
  30. +-------------+----------+
  31. 5 rows in set (0.00 sec)

Supongamos que tu variable de ambiente tenga el valor del contenido 2, según la tabla de relaciones la imagen 4 debería ser la primera en la lista, esto podrías hacerlo asi:

Código MySQL:
Ver original
  1. mysql> SELECT i.*
  2.     -> FROM imagenes i
  3.     -> LEFT JOIN contenido_x_imagenes cxi ON i.idImagen = cxi.idImagen
  4.     -> ORDER BY IF (cxi.idContenido = 2, 1, 2);
  5. +----------+-------------+
  6. | idImagen | descripcion |
  7. +----------+-------------+
  8. |        4 | Img 4       |
  9. |        1 | Img 1       |
  10. |        2 | Img 2       |
  11. |        3 | Img 3       |
  12. |        4 | Img 4       |
  13. +----------+-------------+
  14. 5 rows in set (0.00 sec)

Observa en primer lugar que en el ORDER BY utilizo una condición IF para poner en primer lugar (1) aquellas foros que cuyo contenido sea igual a 2. todas las demás no me interesan y las dejo en segundo lugar (2). Sin embargo la imagen 4 aparece DOS VECES, ya que está relacionada tanto al contenido 1 como al dos... Si no quieres que esto suceda debes agregar una condición para filtrar estos casos.

Saludos
Leo.