Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/01/2015, 13:45
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 3 meses
Puntos: 2658
Respuesta: Poner un If en una sentencia SQL

Por empezar, no existe la idea de "poner IF en una sentencia". Para condicionar por verdadero/falso a fin de restringir los resultados que deben o no mostrarse en una consulta existe el WHERE. Lo que debes hacer es poner el ese WHERE las condiciones que deben cumplirse. Todas.
Así de simple.
Ahora bien:
Cita:
Lo que quiero validar es que si estoy como session de "Alfredo" y entro al perfil de "Juan" me arrogue todas las publicaciones de "Juan" pero si tiene FLAG valor 1 ( Flag: 0 es publico y 1 es privado) entonces no me lo arrogue porque es privado, a menos que yo "alfredo" se lo haya publicado.
Eso es algo que me parece que no se puede resolver sólo con una consulta...
Empecemos por el lado de que si entras a un perfil en una web, MySQL no se entera jamás, porque no interactúa con el navegador, ni tampoco sabe de sesiones en las paginas. En todo caso debes pasarle en la consulta SQL (y solo en la consulta funciona), los parámetros que la aplicación tenga y que existan en la base de datos, que le permitan realizar el filtrado del WHERE.
Claro que para eso también es necesario que la estructura de datos pueda hacer las distinciones que planteas.

¿Puede hacerlas?

No lo sabemos, porque no conocemos qué tan hiciste esa estructura de datos.

Tiene que haber al menos una forma de saber que una publicación se haya hecho en un perfil de A, y que tal publicación le pertenece a B, tal que pueda verla.
Esta idea describe al menos dos tablas: La de perfiles y la de publicaciones, y además que ambos datos deben estar en la publicación, y ser públicos.


En principio, la query sobre publicaciones sería mas o menos así:
Código SQL:
Ver original
  1. SELECT *
  2. FROM publicaciones
  3. WHERE id_user = 'Autor'
  4.     AND id_user_destinatario= 'destinatario'
  5.     AND flag = 0;
Pero estoy suponiendo que FLAG es de esa tabla, y que existe un id_user del autor.
Además esto no cubre la posibilidad de que el destinatario responda el mensaje... Para ello debería hacer una relación 1:N entre el mensaje origen y el mensaje respuesta, que no se si has considerado. Ten ne cuenta que una respuesta a ese menaje, sin relacionarlo con ese mensaje, tendría una propiedad de "Privado", con lo que B no podría leerlo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)