Mein Tisch ist so (np_capacity):Wählen Sie Zeilen mit MAX (datetime) und erhalten Sie auch min Werte mit ihren Daten für eine Spalte?
id tower datetime capacity
---|----|---------------------|----------
1 | A | 2016-05-29 09:02:41 | 34676
2 | B | 2016-05-29 09:02:41 | 10736
5 | C | 2016-05-29 09:02:41 | 55664
3 | D | 2016-05-29 09:02:41 | 32622
4 | A | 2016-05-29 13:08:38 | 5474
6 | B | 2016-05-29 13:08:38 | 20692
7 | C | 2016-05-29 13:08:38 | 134802
8 | D | 2016-05-29 13:08:38 | 4754
und das ist meine Frage:
SELECT npc.*,
(SELECT min(c2.capacity) FROM np_capacity c2 WHERE c2.tower = npc.tower AND datetime BETWEEN (NOW() - INTERVAL 14 DAY) AND NOW()) minCapacity,
FROM (SELECT max(datetime) maxDatetime FROM np_capacity) c1
JOIN np_capacity npc ON (npc.datetime = c1.maxDatetime)
Es werden alle Türme mit der max Datumzeit wählen dann für die Türme es wird auch die Auswahl Min Kapazität in der Tabelle für die letzten zwei Wochen. Der Ausgang ist so etwas wie dieses:
id tower datetime capacity MinCapacity
---|----|---------------------|----------|-------------
4 | A | 2016-05-29 13:08:38 | 5474 | 5474
6 | B | 2016-05-29 13:08:38 | 20692 | 10736
7 | C | 2016-05-29 13:08:38 | 134802 | 55664
8 | D | 2016-05-29 13:08:38 | 4754 | 4754
Alles gut so weit. Die Datetime ist für das Maximum (Datetime) und die MinCapacity ist der Minwert für die letzten zwei Wochen und auch was ich will. Wie kann ich die spezifische Datetime auch für ausgewählte MinCapacity bekommen. (MinCapacityDate)
Vielen Dank. Sieht so aus, als würde das funktionieren. Das einzige Problem hier ist, dass manchmal die Kapazität = 0 ist und die Abfrage diese Zeile aus irgendeinem Grund zweimal zurückgibt, aber das Hinzufügen von "AND capacity! = 0" unterhalb von Zeile 9 scheint zu funktionieren. Darf ich das machen? – Vlad
@DrLizzard - Ich verstehe nicht die Situation, über die Sie sprechen. Gehen Sie zu dieser SQL-Fiddle und passen Sie die Daten an, um das beschriebene Problem darzustellen, und geben Sie dann die neue SQLFiddle-URL frei. Ich werde mir ansehen, worauf Sie sich beziehen. – AgRizzo
http://sqlfiddle.com/#!9/24639/7 Die Tabelle wird von einer externen Quelle aufgefüllt. Manchmal enthält die Kapazitätsspalte eine Null. Wenn dies geschieht, gibt das von Ihrer Abfrage zurückgegebene Array doppelte Zeilen zurück. Ich möchte verhindern, dass Zeilen ausgewählt werden, in denen die Kapazität null enthält, und Sie möchten wissen, ob das SQLFiddle die richtigen Ergebnisse liefert. – Vlad