Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/02/2010, 03:11
Joaquin2111
 
Fecha de Ingreso: diciembre-2009
Mensajes: 40
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Dudas con LEFT JOIN

Hola de nuevo.

He conseguido lo que buscaba, pero no se si de una manera un tanto rebuscada...

La consulta resultante es la siguiente:
Código SQL:
Ver original
  1. SELECT * FROM ((SELECT a.id_atributo, a.nombre, a.columna, p.id_usuario, p.privacidad FROM atributos a LEFT JOIN privacidad p
  2. ON a.id_atributo = p.id_atributo
  3. WHERE a.id_atributo NOT IN (SELECT p.id_atributo FROM privacidad p WHERE p.id_usuario = 38))
  4. UNION
  5. (
  6. SELECT a.id_atributo, a.nombre, a.columna, p.id_usuario, p.privacidad FROM atributos a,privacidad p WHERE p.id_usuario = 38 AND a.id_atributo = p.id_atributo
  7. )) AS consulta
  8. ORDER BY consulta.id_atributo

Y estos los resultados:

"id_atributo";"nombre";"columna";"id_usuario";"pri vacidad"
"1";"Nombre";"nombre";"38";"3"
"2";"Apellidos";"apellidos";"1";"3"
"3";"Fecha de Nacimiento";"fecha_nacimiento";NULL;NULL
"4";"Sexo";"sexo";NULL;NULL
"5";"Ciudad";"ciudad";NULL;NULL


Los datos que a mi me interesan son siempre los del usuario 38, como me está devolviendo datos de otro usuario, desde mi código PHP tendré que comprobar siempre si el dato que me devuelve es de ese usuario y si no hacer otra cosa.

Lo ideal hubiera sido que me devolviera los datos con una simple consulta, pero entiendo que no es posible.

Si alguien sabe como hacerlo que me lo diga, ya que esta consulta es un tanto complicada de mantener en un futuro.