Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

MySQL: Sorteren op (nu - Interval 2 dagen) en dateTo

Pagina: 1
Acties:

  • Wkrooshof
  • Registratie: Augustus 2011
  • Laatst online: 19-11 11:55
Ik heb een probleem, voor een klant moet ik sorteren op te velden.

Situatie: tabel heeft id date_to en created_at kolommen. Nu is het de bedoeling dat de records met created_at == binnen afgelopen 2 dagen bovenaan komen, waarna de overige records gesorteerd worden op date_to.

Bijv:

IDDateCreated
230-05-201429-04-2014
131-07-201528-04-2014
330-05-201421-04-2014
329-05-201422-04-2014
328-05-201423-04-2014


De vraag is nu; hoe realiseer ik dit met MySQL?
Of moet ik dit apart doen in de zin van:
1e query: WHERE nu - interval 2 dagen
2e query: order by dateto desc

en dan achter elkaar itereren?

Bvd!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

Last.fm | Code Talks


  • Wkrooshof
  • Registratie: Augustus 2011
  • Laatst online: 19-11 11:55
Dat had ik idd eerst, maar omdat created_at altijd is gevuld, sorteert deze dus echt alleen op created_at. Of begrijp ik dit verkeerd?

EDIT: net even geprobeerd, hij sorteert alle created_at dagen, logisch natuurlijk; maar geen date_to dagen.
Dat klopt dus half, het is de bedoeling dat hij ALLEEN de created_at van de afgelopen 2 dagen sorteert en daarna niet meer op created_at maar op date_to sorteren.

Snappie :)?

[ Voor 51% gewijzigd door Wkrooshof op 29-04-2014 14:12 ]


  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

Dan zou ik even naar Union kijken zal zoiets zijn:

MySQL:
1
2
3
SELECT * FROM blaat ORDER BY created_at WHERE created < 2 days 
UNION 
SELECT * FROM blaat ORDER BY  Date WHERE created > 2 days 

[ Voor 16% gewijzigd door Afvalzak op 29-04-2014 14:20 ]

Last.fm | Code Talks


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
of een IF in je orderby...
bijv:

ORDER BY if(Date >= DATE_SUB(CURRENT_DATE, INTERVAL 2 DAY), Date, created_at)

  • Wkrooshof
  • Registratie: Augustus 2011
  • Laatst online: 19-11 11:55
P.O. Box schreef op dinsdag 29 april 2014 @ 14:20:
of een IF in je orderby...
bijv:

ORDER BY if(Date >= DATE_SUB(CURRENT_DATE, INTERVAL 2 DAY), Date, created_at)
Dit werkt bijna helemaal, maar nu komt er een heel apart iets in voor.

Afbeeldingslocatie: http://oi58.tinypic.com/2aa0vb4.jpg

Waar komt deze 2014-04-23 vandaan !?

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 05:56
Ik zou eens naar de oplossing van Afvalzak kijken en dan de WHERE en de ORDER delen omdraaien. Zou prima moeten werken, als je de WHERE conditie op interval goed zet.

  • Wkrooshof
  • Registratie: Augustus 2011
  • Laatst online: 19-11 11:55
Thanks, heeft helemaal gewerkt. Had in eerste instantie niet gekozen voor de methode van Afvalzak omdat ik ook nog moet sorteren op een boolean

boolean true -> created_at afgelopen 2 dagen -> date_to.
SELECT * FROM actions WHERE isEntered = 1
UNION
SELECT * FROM `actions` WHERE DATE(created_at) >= CURRENT_DATE - INTERVAL 2 DAY
UNION
SELECT * FROM `actions` WHERE DATE(created_at) < CURRENT_DATE - INTERVAL 2 DAY
EDIT: Na de MySQL docs te lezen blijkt dit niet de manier te zijn, nu is het dit geworden!
(SELECT * FROM `actions` WHERE DATE(created_at) >= CURRENT_DATE - INTERVAL 2 DAY)
UNION
(SELECT * FROM `actions` WHERE DATE(created_at) < CURRENT_DATE - INTERVAL 2 DAY)
ORDER BY isEntered desc

[ Voor 25% gewijzigd door Wkrooshof op 29-04-2014 15:17 ]


  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

jbdeiman schreef op dinsdag 29 april 2014 @ 15:05:
Ik zou eens naar de oplossing van Afvalzak kijken en dan de WHERE en de ORDER delen omdraaien. Zou prima moeten werken, als je de WHERE conditie op interval goed zet.
Ah, ja het was ook maar een zetje in de richting, mijn MySQL is wat roestiger door alle frameworks die tegenwoordig je MySQL queries doen voor je ;)

Last.fm | Code Talks


  • Wkrooshof
  • Registratie: Augustus 2011
  • Laatst online: 19-11 11:55
Ik werk idd ook met een framework; alleen daar is deze functie dan weer niet te vinden ;) (of ik zoek niet goed genoeg; kan waarschijnlijk een betere redenatie zijn :D )
Pagina: 1