Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/05/2013, 09:20
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: Sentencia JOINS

Hola de nuevo andoencombi:

Revisaste la liga que te puse??? no lo creo, pues si lo hubieras hecho te habrías dado cuenta que es mejor utilizar JOIN's que hacer las uniones en el FROM-WHERE:

En lugar de hacer esto:

Código:
...
FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo
...
Has esto:

Código:
...
FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
...
Ahora bien, volvamos a tu consulta. en el WHERE NO ESTÁS COLOCANDO NINGUNA RELACIÓN ENTRE TUS TABLAS, por lo tanto se está realizando un PRODUCTO CARTESIANO entre las mismas, checa este script para que veas a qué me refiero, supongamos que tienes estas dos tablas:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tablaA;
  2. +------+-------------+
  3. | id   | descripcion |
  4. +------+-------------+
  5. |    1 | uno         |
  6. |    2 | dos         |
  7. |    3 | tres        |
  8. +------+-------------+
  9. 3 rows IN SET (0.00 sec)
  10.  
  11. mysql> SELECT * FROM tablaB;
  12. +------+-------------+
  13. | id   | descripcion |
  14. +------+-------------+
  15. |    1 | one         |
  16. |    2 | two         |
  17. |    3 | three       |
  18. +------+-------------+
  19. 3 rows IN SET (0.00 sec)

Lo que tú estás haciendo es algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tablaA, tablaB
  2.     -> WHERE tablaA.id = 1;
  3. +------+-------------+------+-------------+
  4. | id   | descripcion | id   | descripcion |
  5. +------+-------------+------+-------------+
  6. |    1 | uno         |    1 | one         |
  7. |    1 | uno         |    2 | two         |
  8. |    1 | uno         |    3 | three       |
  9. +------+-------------+------+-------------+
  10. 3 rows IN SET (0.00 sec)

Es decir, en el WHERE pones una condición, de que el id = 1, pero NO ESPECIFICAS COMO ESTÁN RELACIONADAS LAS DOS TABLAS... deberías hacer algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tablaA
  2.     -> INNER JOIN tablaB ON TablaA.id = TablaB.id
  3.     -> WHERE tablaA.id = 1;
  4. +------+-------------+------+-------------+
  5. | id   | descripcion | id   | descripcion |
  6. +------+-------------+------+-------------+
  7. |    1 | uno         |    1 | one         |
  8. +------+-------------+------+-------------+
  9. 1 row IN SET (0.00 sec)

Observa que en la sección ON especifico la relación faltante (en tu caso sería una relación entre ID y id_relacion)

Haz la prueba y nos comentas.

Finalmente no postees código PHP, en lugar de poner ($buscar, $eldiapasado, etc.) POSTEA LOS VALORES QUE TIENEN ESTOS PARÁMETROS. también ahí puede haber problemas.

Saludos
Leo.