Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Sortowanie według dat
Forum PHP.pl > Forum > Przedszkole
aras785
Cześć.

Jak napisać zapytanie tak aby najpierw pokazało daty w przód (ASC), a później całą resztę (DESC)

Moje zapytanie:


  1. SELECT SQL_CALC_FOUND_ROWS wp_posts.ID,wp_postmeta.meta_value
  2. FROM wp_posts
  3. INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
  4. INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id)
  5. INNER JOIN wp_postmeta AS mt2 ON (wp_posts.ID = mt2.post_id)
  6. INNER JOIN wp_postmeta AS mt3 ON (wp_posts.ID = mt3.post_id)
  7. INNER JOIN wp_postmeta AS mt4 ON (wp_posts.ID = mt4.post_id)
  8. INNER JOIN wp_postmeta AS mt5 ON (wp_posts.ID = mt5.post_id)
  9. WHERE 1=1
  10. AND (wp_postmeta.meta_key = 'data_od'
  11. AND ((mt1.meta_key = 'post_jest_wydarzeniem'
  12. AND mt1.meta_value = '1')
  13. AND (((mt2.meta_key = 'data_od'
  14. AND mt2.meta_value >= '20180101')
  15. AND (mt3.meta_key = 'data_od'
  16. AND mt3.meta_value <= '20180131') )
  17. OR ((mt4.meta_key = 'data_do'
  18. AND mt4.meta_value >= '20180101')
  19. AND (mt5.meta_key = 'data_do'
  20. AND mt5.meta_value <= '20180131') ) ) ))
  21. AND wp_posts.post_type = 'page'
  22. AND (wp_posts.post_status = 'publish'
  23. OR wp_posts.post_status = 'future'
  24. OR wp_posts.post_status = 'draft'
  25. OR wp_posts.post_status = 'pending'
  26. OR wp_posts.post_status = 'private')
  27. GROUP BY wp_posts.ID
  28. ORDER BY
  29. wp_postmeta.meta_value >= 20180104 ASC,
  30. wp_postmeta.meta_value < 20180104 DESC
  31. LIMIT 0,
  32. 8


trueblue
Może tak?
  1. ORDER BY
  2. (CASE WHEN wp_postmeta.meta_value >= 20180104 THEN wp.postmeta.meta_value END) ASC,
  3. (CASE WHEN wp_postmeta.meta_value < 20180104 THEN wp.postmeta.meta_value END) DESC
SmokAnalog
Można dużo prościej:

  1. ORDER BY `wp_postmeta`.`meta_value` < UNIX_TIMESTAMP(),
  2. ABS(`wp_postmeta`.`meta_value` - UNIX_TIMESTAMP())


Albo chyba wydajniej:

  1. ORDER BY ABS(`wp_postmeta`.`meta_value` - UNIX_TIMESTAMP()) - (`wp_postmeta`.`meta_value` >= UNIX_TIMESTAMP()) * 9999999999
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.