Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/10/2012, 10:40
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: Consulta con join mysql

Hola andruxand:

Creo que si pusieras algunos datos de ejemplo sería más fácil de entender qué es lo que necesitas, pero si entendí correctamente tú ultima explicación podrías hacer más o menos esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tablaX;
  2. +------+-------------+
  3. | idX  | descripcion |
  4. +------+-------------+
  5. |    1 | uno         |
  6. |    2 | dos         |
  7. |    3 | tres        |
  8. |    4 | cuatro      |
  9. +------+-------------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT * FROM tablaY;
  13. +------+------+------------------+--------+
  14. | idY  | idX  | otra_descripcion | estado |
  15. +------+------+------------------+--------+
  16. |   10 |    1 | otro uno         |      0 |
  17. |   20 |    2 | otro dos         |      1 |
  18. +------+------+------------------+--------+
  19. 2 rows in set (0.00 sec)
  20.  
  21. mysql> SELECT * FROM tablaX tx
  22.     -> WHERE
  23.     -> NOT EXISTS (SELECT idX FROM tablaY ty WHERE tx.idX = ty.idX)
  24.     -> OR  EXISTS (SELECT idX FROM tablaY ty
  25.     ->             WHERE tx.idX = ty.idX AND ty.estado = 0);
  26. +------+-------------+
  27. | idX  | descripcion |
  28. +------+-------------+
  29. |    1 | uno         |
  30. |    3 | tres        |
  31. |    4 | cuatro      |
  32. +------+-------------+
  33. 3 rows in set (0.00 sec)

Observa que en la tablaY existe el idX = 1, pero su estado es igual a 0, para el caso de los idX 3, y 4 estos no existen en la tablaY... de tal suerte que el único registro que no se muestra es el idX = 2, ya que este SI EXISTE en la tablaY y además tiene un estado distinto a 0.

Si esto no te sirve puedes tratar de poned datos como lo hice yo, para explicar mejor tu problema.

Código:
EDITADO: es mejor la opción del LEFT JOIN, pero igual y te sirve para conocer otro modo de resolver el problema.

Saludos

Saludos
Leo.