Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/06/2012, 15:58
danihxh
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Left Join con condición que devuelva campos NULL si no hay coincidencia

Muchas gracias por contestar tan rápido! No era exactamente lo que quería, pero me ha sido de gran ayuda. Al final el campo tipo de solicitud sólo iba a tener dos valores, así que lo he puesto como BOOLEAN y me ha quedado algo así:

Código MySQL:
Ver original
  1.     usuarios.id,
  2.     usuarios.estado,
  3.     solicitudes.id,
  4.     .solicitudes.fecha,
  5.     IF((solicitudes.tipo OR solicitudes.tipo IS NULL)AND count(*)=1, NULL, FALSE) AS condicion
  6.     usuarios
  7.     LEFT JOIN
  8.     solicitudes ON usuarios.id=solicitudes.solicitante
  9.     nick='$this->user'
  10.     condicion IS NULL
  11.     OR condicion=FALSE
  12.  
  13.     usuarios.id,
  14.     usuarios.estado,
  15.     solicitudes.id,
  16.     .solicitudes.fecha,
  17.     IF((NOT solicitudes.tipo OR solicitudes.tipo IS NULL)AND count(*)=1, NULL, TRUE) AS condicion
  18.     usuarios
  19.     LEFT JOIN
  20.     solicitudes ON usuarios.id=solicitudes.solicitante
  21.     nick='$this->user'
  22.     condicion IS NULL
  23.     OR condicion=TRUE

De esta manera, obtengo "condicion"=NULL cuando el usuario no tiene solicitudes o tiene sólo una. En este último caso, cuando "solicitudes.tipo"==TRUE (primera query) o cuando "solicitudes.tipo"==FALSE (segunda query).

En cualquier otro caso: cuando "solicitudes.tipo"==FALSE (primera query), cuando "solicitudes.tipo"==TRUE(segunda query) o cuando el usuario ya tiene dos solicitudes (una de cada tipo), se obtiene TRUE en la primera queryy FALSE en la segunda.

Parece un poco engorroso, pero para lo que estoy haciendo me sirve, aunque estoy abierto a sugerencias. Espero que se entienda la explicación por si alguien lo consulta alguna vez :)

Última edición por danihxh; 28/06/2012 a las 16:03