Mysql order by / DESC probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 11-09 18:50
Echt heel stom, maar ik krijg iets heel simpels NIET voor elkaar. Ik heb namelijk de volgende query:
SQL:
1
select t.id, DATE_FORMAT(t.timestamp, '%H:%i'), t.core, t.temp1, t.temp2, d.diskusage from temperature t, diskusage d where t.id = d.id ORDER BY t.id DESC limit 12
Hiermee haal ik temperaturen uit een tabelletje om vervolgens een grafiek van te maken. Echter wil ik dat alles wordt omgedraaid... de output is nu zoiets:

Afbeeldingslocatie: http://dl.dropbox.com/u/1757832/Screen%20shot%202010-12-18%20at%209.06.36%20PM.png
Echter wil ik graag dat de laatste waarden in de tabel als laatste verschijnen. M.a.w. de hoogste ID moet onderaan staan. Ik heb al lopen pielen met ASC/DESC/LIMIT, maar ik kom er domweg niet uit. Wie helpt mij?

Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
select t.id, DATE_FORMAT(t.timestamp, '%H:%i'), t.core, t.temp1, t.temp2, d.diskusage from temperature t, diskusage d where t.id = d.id ORDER BY t.id ASC limit 12

?

Acties:
  • 0 Henk 'm!

  • Emmeau
  • Registratie: Mei 2003
  • Niet online

Emmeau

All your UNIX are belong to us

code:
1
select t.id, DATE_FORMAT(t.timestamp, '%H:%i') as Timestamp, t.core, t.temp1, t.temp2, d.diskusage from temperature t, diskusage d where t.id = d.id ORDER BY t.Timestamp ASC limit 12


Sorteren op id ga je er vanuit dat die dingen altijd in dezelfde volgorde gevuld worden (wat in theorie niet hoeft volgens mij)
Sorteren op je timestamp lijkt me beter

If you choose to criticise you choose your enemies


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 13:22
Wat als je alleen dit doet:
SQL:
1
SELECT t.id, t.core, t.temp1, t.temp2, d.diskusage FROM temperature t, diskusage d WHERE t.id = d.id ORDER BY t.id ASC


Ik heb dus
SQL:
1
DATE_FORMAT(t.timestamp, '%H:%i')
weggelaten :P

P.S gebruik de [code=sql ] <hier je code> [/code ] tags in je post om het leesbaarder te maken ;)

[ Voor 11% gewijzigd door ThinkPad op 18-12-2010 21:16 ]


Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 11-09 18:50
Nee, jullie queries doen allemaal NIET wat ik wil :(. Ik heb het nu echter wel opgelost door het volgende:

SQL:
1
2
3
4
5
6
7
8
select timestamp, core, temp1, temp2, diskusage from (
  select t.id, DATE_FORMAT(t.timestamp, '%H:%i') as timestamp
, t.core
, t.temp1
, t.temp2
, d.diskusage
  from temperature t, diskusage d
where t.id = d.id ORDER BY t.id DESC limit 12) info order by id ASC


Maar ik vraag me af of dit niet makkelijker kan :|

[ Voor 7% gewijzigd door smeerbartje op 18-12-2010 21:23 ]


Acties:
  • 0 Henk 'm!

  • tss68nl
  • Registratie: Mei 2007
  • Laatst online: 07-05 23:55
Subselect.

Select * from (
<Originele Query>
) BaseData ORDER BY Timestamp ASC

Als MySQL dat nog niet ondersteund heb je een probleem, en kan je wellicht beter in je grafiek / code sorteren.

Het probleem is namelijk dat je de laatste 12 wil hebben, maar de limit functie van MySQL luistert naar de sorteervolgorder van de query. Je kan dus je resultaten niet anders sorteren, dan nodig is voor je limit functie.

KNX Huisautomatisering - DMX Lichtsturing


Acties:
  • 0 Henk 'm!

  • tss68nl
  • Registratie: Mei 2007
  • Laatst online: 07-05 23:55
smeerbartje schreef op zaterdag 18 december 2010 @ 21:20:
Maar ik vraag me af of dit niet makkelijker kan :|
Je was me voor...dat is de juiste oplossing. Zie mijn post hierboven ;)

En nee, dat kan niet makkelijker. :)

KNX Huisautomatisering - DMX Lichtsturing


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
tss68nl schreef op zaterdag 18 december 2010 @ 21:28:
[...]


Je was me voor...dat is de juiste oplossing. Zie mijn post hierboven ;)

En nee, dat kan niet makkelijker. :)
Of gewoon in je presentatie logica sorteren.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 11-09 18:50
Thanks allemaal voor het meedenken... ik had gedacht dat het veel makkelijker zou kunnen, maar ach ja... het werkt :D.

Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 11-09 18:50
Ik heb by the way nog wel een ander vraagje: d.m.v. een cronjob sla ik elke 5 minuten de waardes op in de tabel. Echter ik wil ook een query maken die elke mij per uur/dagen/etc. de waarden teruggeeft. Dus in het voorbeeld hierboven wil ik dan alleen de waarden van 20:00, 21:00, 22:00, etc... hoe doe ik dit? Ik weet niet zo goed waar ik op moet zoeken namelijk.

Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
smeerbartje schreef op zondag 19 december 2010 @ 15:49:
Ik heb by the way nog wel een ander vraagje: d.m.v. een cronjob sla ik elke 5 minuten de waardes op in de tabel. Echter ik wil ook een query maken die elke mij per uur/dagen/etc. de waarden teruggeeft. Dus in het voorbeeld hierboven wil ik dan alleen de waarden van 20:00, 21:00, 22:00, etc... hoe doe ik dit? Ik weet niet zo goed waar ik op moet zoeken namelijk.
Hangt er van af wat je wilt, als je alleen die waarden wilt dan zet je in je where dat minutendeel van de tijd 0 moet zijn, als het een gemiddelde waarde moet zijn dan moet group by over uur/dag/etc werken. (Zie je trouwens zelf echt niet wat de overeenkomst is tussen 20:00, 21:00 en 22:00 wanneer je die lijst typt??)

[ Voor 7% gewijzigd door _js_ op 19-12-2010 16:20 ]


Acties:
  • 0 Henk 'm!

  • smeerbartje
  • Registratie: September 2006
  • Laatst online: 11-09 18:50
_js_ schreef op zondag 19 december 2010 @ 16:18:
[...]

Hangt er van af wat je wilt, als je alleen die waarden wilt dan zet je in je where dat minutendeel van de tijd 0 moet zijn, als het een gemiddelde waarde moet zijn dan moet group by over uur/dag/etc werken. (Zie je trouwens zelf echt niet wat de overeenkomst is tussen 20:00, 21:00 en 22:00 wanneer je die lijst typt??)
Aangezien ik een IDtje tot mijn beschikking heb kan het met mod 12 = 0 op ID... nu krijg ik uren en dit kan uiteraard voor elk interval. Echter ik betwijfel of dit de mooiste oplossing is.

Wat bedoel je precies met de overeenkomst van de door mij genoemde data?
Pagina: 1