Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/06/2012, 09:12
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años, 2 meses
Puntos: 447
Respuesta: Se me multiplica la consulta de 2 tablas

Las comas hacen la función del JOIN, pero no si no especificas sobre qué campos es la unión entonces se realiza el producto cartesiano:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tablaA;
  2. +------+-------------+
  3. | idA  | descripcion |
  4. +------+-------------+
  5. |    1 | uno         |
  6. |    2 | dos         |
  7. +------+-------------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. mysql> SELECT * FROM tablaB;
  11. +------+-------------+
  12. | idB  | descripcion |
  13. +------+-------------+
  14. |    1 | one         |
  15. |    2 | two         |
  16. +------+-------------+
  17. 2 rows in set (0.00 sec)
  18.  
  19. mysql> #Producto cartesiano
  20. mysql> SELECT * FROM tablaA, tablaB;
  21. +------+-------------+------+-------------+
  22. | idA  | descripcion | idB  | descripcion |
  23. +------+-------------+------+-------------+
  24. |    1 | uno         |    1 | one         |
  25. |    2 | dos         |    1 | one         |
  26. |    1 | uno         |    2 | two         |
  27. |    2 | dos         |    2 | two         |
  28. +------+-------------+------+-------------+
  29. 4 rows in set (0.00 sec)
  30.  
  31. mysql> SELECT * FROM tablaA INNER JOIN tablaB;
  32. +------+-------------+------+-------------+
  33. | idA  | descripcion | idB  | descripcion |
  34. +------+-------------+------+-------------+
  35. |    1 | uno         |    1 | one         |
  36. |    2 | dos         |    1 | one         |
  37. |    1 | uno         |    2 | two         |
  38. |    2 | dos         |    2 | two         |
  39. +------+-------------+------+-------------+
  40. 4 rows in set (0.00 sec)

En lo particular recomiendo siempre utilizar JOIN's, pero sea que utilices comas o JOINS DEBES ESPECIFICAR EL CRITERIO DE UNION EN CADA CASO.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tablaA, tablaB
  2.     -> WHERE tablaA.idA = tablaB.idB;
  3. +------+-------------+------+-------------+
  4. | idA  | descripcion | idB  | descripcion |
  5. +------+-------------+------+-------------+
  6. |    1 | uno         |    1 | one         |
  7. |    2 | dos         |    2 | two         |
  8. +------+-------------+------+-------------+
  9. 2 rows in set (0.00 sec)
  10.  
  11. mysql>
  12. mysql> SELECT * FROM tablaA
  13.     -> INNER JOIN tablaB ON tablaA.idA = tablaB.idB;
  14. +------+-------------+------+-------------+
  15. | idA  | descripcion | idB  | descripcion |
  16. +------+-------------+------+-------------+
  17. |    1 | uno         |    1 | one         |
  18. |    2 | dos         |    2 | two         |
  19. +------+-------------+------+-------------+
  20. 2 rows in set (0.00 sec)

Saludos
Leo.