Uhm...
a me non funziona con una semplice join
ho dovuto prima creare una vista e metterla in join !

Come detto prendiamo in esame i consumi di acqua con relativo inserimento della rilevazione dei consumi del contatore, quindi numero progressivo

Tabella di esempio;
codice:
CREATE TABLE `html_acqua` (
  `id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `filiale` int(11) NOT NULL,
  `anno` int(4) NOT NULL,
  `mese` int(2) NOT NULL,
  `nro_contatore` varchar(30) NOT NULL,
  `rilevazione` decimal(8,3) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fil` (`filiale`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=1028 DEFAULT CHARSET=latin1;

prima ho creato una view denominata v_acqua_2 per avere il mese maggiorato di 1, quindi semplice query;
codice:
SELECT
anno,
mese+1 AS mese_maggiorato,
nro_contatore,
rilevazione,
filiale
FROM html_acqua
e poi utilizzando questa query per il risultato finale

codice:
SELECT
a.pid_depot,
a.nro_contatore,
a.mese,
a.rilevazione as ril_a,
b.rilevazione AS ril_b,
a.rilevazione-b.rilevazione AS consumo
FROM rilevazioni_acqua AS a
JOIN v_acqua_2 AS b ON b.pid_depot=a.pid_depot AND a.mese=b.mese_maggiorato AND a.anno = b.anno
WHERE a.pid_depot = 15
AND a.anno = 2015
ORDER BY a.mese ASC

Il problema rimane proprio il mese di gennaio, nessun suggerimento ?


Grazie in anticipo per l'aiuto !!