Ver Mensaje Individual
  #7 (permalink)  
Antiguo 19/06/2014, 11:08
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta en mysql con php

Vamos al punto de una consulta a tres tablas. Eso se escribe simplement easí:
Código SQL:
Ver original
  1. SELECT * FROM lecturas L
  2.     INNER JOIN contadores C ON L.id_contador = C.id
  3.     INNER JOIN instalaciones i ON C.id_inst = i.id
  4. WHERE L.fecha>'2014-05-15'
Quiero hacerte notar, antes que nada, que no es correcto poner algo como.
Código SQL:
Ver original
  1. fecha>2014-05-15
porque la fecha expresada de ese modo en realidad es una operación aritmética de resta (2014-05--15 = 1994). Para que MySQL tome contextualmente la fecha como fecha, debe ser una cadena de texto, o bien aplicar una cunción de conversión:
Código SQL:
Ver original
  1. fecha>'2014-05-15'
Código SQL:
Ver original
  1. fecha>DATE('2014-05-15')

Ahora bien, respecto a que no te salgan repetidos algunos de los datos (desde la primera a la ultima tabla), eso es inevitable desde el punto de vista de SQL.
La base de datos sólo puede devolver datos que se relacionan, y por tanto devolverá los datos en función de la cardinalidad de la relación. Si la relación entre la primera tabla y la segunda es de 1:10, devolverá 10 veces los datos de la primera relacionados con cada uno de los de la segunda que sean diferentes entre sí.
Obviamente, si la relación entre la segunda y tercera no es 1:1, el resultado se multiplicará.
Lo que quiero que entiendas es que eso NO ES UN EROR. Es el comportamiento normal y esperado de una consulta a una base de datos.
Si tu problema es cómo hacer para mostrar ese resultado sin repetir los datos que son iguales trne dos registros, bueno, para eso se usa el ingenio, y se programa el script...
¿Cómo?
Mostrando en cada línea de la tabla en pantalla los datos de cada valor del array sólo cuando cambie su valor respecto al array del ciclo anterior.
No hay mucho más secreto que ese. Eso se llama PROGRAMAR, y la lógica de ese caso es siempre más o menos la misma.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)