Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/02/2012, 10:31
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: Select un poco complicado?

Hola de nuevo...

Así ya cambia la cosa... lo que preguntas ahora nada tiene que ver a la forma en que planteaste tu problema original. Lo puedes hacer utilizando un LEFT JOIN sobre la misma tabla (utilizando un alias) checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+--------+--------+
  3. | Id   | CampoA | CampoB |
  4. +------+--------+--------+
  5. |    1 |      1 |      0 |
  6. |    2 |      1 |      1 |
  7. |    3 |      2 |      1 |
  8. |    4 |      2 |      1 |
  9. +------+--------+--------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT T1.*, T2.* FROM tabla T1
  13.     -> LEFT JOIN tabla T2
  14.     -> ON T1.CampoA = T2.CampoA AND T2.CampoB = 0
  15.     -> WHERE T1.CampoB = 1;
  16. +------+--------+--------+------+--------+--------+
  17. | Id   | CampoA | CampoB | Id   | CampoA | CampoB |
  18. +------+--------+--------+------+--------+--------+
  19. |    2 |      1 |      1 |    1 |      1 |      0 |
  20. |    3 |      2 |      1 | NULL |   NULL |   NULL |
  21. |    4 |      2 |      1 | NULL |   NULL |   NULL |
  22. +------+--------+--------+------+--------+--------+
  23. 3 rows in set (0.02 sec)

Observa que utilizo dos alias para la misma tabla (T1, T2). Para el LEFT JOIN estoy poniendo en el ON la unión por CampoA, pero estoy filtrando SÓLO AQUELLOS REGISTROS QUE TENGAN UN CAMPOB=0. Para el FROM estoy seleccionando sólo los registros con Campo B = 1... al hacer la unión observa que sólo el primer caso tiene información correspondiente a la tabla LEFT... pues aquí sí se da el caso de un registro que tiene a la vez CampoB = 1 y CampoB = 0...

Para completar la consulta lo único que faltaría es agregar con un AND en la condición final T2.CampoA is null (o T2.id o T2.CampoB... es exactamente lo mismo) y modificar el select para que te regrese sólo el dato que quieres.

Dale un vistazo para ver si es lo que necesitas.

Finalmente una duda existencial: ¿Por qué razón no quieres/puedes usar subconsultas?

Saludos
Leo.