J'ai une table dans laquelle je garde différents compteurs (compteur d'eau, compteur d'électricité) et dans un autre tableau je garde les lectures pour chaque compteur. La structure de la table est comme ceci: Le tableau mètresSELECT pour obtenir deux entrées, du même tableau, différenciées par date, dans une rangée
MeterID | MeterType | MeterName
Les lectures de la table:
ReadingID | MeterID | Index | DateOfReading
Les lectures d'un compteur sont lus chaque mois. La chose que j'essaye de faire maintenant est d'obtenir l'information de mètre, la lecture courante et la lecture précédente dans juste une rangée. Donc, si j'aurais une requête, la ligne suivante entraînerait:
MeterID | MeterType | MeterName | CurrnetIndex | LastIndex
J'ai la requête suivante jusqu'à présent:
SELECT Meter.MeterID, Meter.MeterType, Meter.MeterName, CurrentReading.Index, PreviousReading.Index
FROM Meters AS Meter
LEFT OUTER JOIN Readings AS CurrentReading ON Meter.MeterID = CurrentReading.MeterID
LEFT OUTER JOIN Readings AS PreviousReading ON Meter.MeterID = PreviouseReading.MeterID
WHERE CurrentReading.ReadingID != PreviousReading.ReadingID AND DIMESTAMPDIFF(MONTH, CurrentReading.DateOfReading, PreviousReding.DateOfReading)=-1
Le problème est que je ne peux pas avoir la lecture en cours ou précédent , ou les deux, mais je voudrais encore avoir récupéré les informations du compteur. Il est parfaitement acceptable pour moi d'obtenir des colonnes NULL, mais j'ai encore besoin d'une rangée :)
+1 pour l'utilisation de plusieurs conditions sur 'LEFT JOIN' –