Noniin.. hei taas kaikille. Minulla on iso ongelma, joka tuli yllättäen. Eli tapahtumat ovat taulussa ja yritän hakea niitä päivämäärän mukaan, mutta ei tietenkään onnistu.
Tapahtuma 2 | 2013-06-03
Tapahtuma 1 | 2013-05-19
Tapahtuma 3 | 2013-08-10
Eli Suomeksi pitäisi näyttää tältä:
Tapahtuma 1 | 19.5.2013
Tapahtuma 2 | 3.6.2013
Tapahtuma 3 | 10.8.2013
Haen tapahtumat päivämäärän mukaan. ORDER BY date ... hmm.. miten saisin koneen ymmärtämään että ensin katsoisi vuoden, sitten kuukauden ja sitten päivän suomalaisittain?
No jos sulla on ne missään järkevässä muodossa tietokannassa, niin kone katsoo automaattisesti ORDER BY:llä ensin vuoden jne.
Tietysti jos sulla on tietokannassa päivämäärät tekstimuodossa eli järjettömässä muodossa (ja vieläpä jossain muussa kuin ISO-standardin mukaisessa), niin tietenkin ne silloin myös sortataan tekstin sorttaussääntöjen mukaan.
Eli normaali ja ainoa järkevä tapa ja myös ongelmasi ratkaisu on käyttää tietokannassa datetime tms. tietomuotoa ja käyttäjälle näytettäessä muotoilla se käyttäjän lokaalin mukaiseen muotoon.
Muunnin kentän muotoon-> DATETIME (2013-05-19)
Mutta ei järjestys muuttunut, valitettavasti. Alla SQL-lause jolla haen tietoa:
$sql = "SELECT * FROM (SELECT e_id, SUM($this->need.need) AS tarve FROM $this->need JOIN $this->group ON $this->need.g_id = $this->group.g_id GROUP BY e_id) AS sql2 JOIN (SELECT $this->event.*, COUNT($this->booking.e_id) AS varaus FROM $this->event LEFT JOIN $this->booking ON e_id = $this->event.id WHERE status = 1 GROUP BY id ORDER BY date) AS sql1 ON sql1.id = sql2.e_id"; // Tulostaa: // Tapahtuma la 27.4.2013 10:00-17:00 Helsinki 10 5
Lisäys:
Luulen että vika täytyy olla omissa SQL-lauseissa, jotka ovat liian monimutkaisia. Esim. alla oleva tuo tapahtumat oikein:
// Palauta tulevat tapahtumat public function get_upcoming_events() { $event_data = $this->wpdb->get_results($this->wpdb->prepare("SELECT * FROM $this->event WHERE status = 2")); return $event_data; }
Lisäys: Osaatteko selittää miksi kaikki tulevat oikeassa järjestyksessä kun haen kaikki tapahtumat. Mutta kun osan, niin silloin sekaisin... Eli hain kaikki statukset 1,2,3 homma ok. Vain status 1 niin epäjärjestys. Sillä ei ollut merkitystä onko date vai datetime. Tapahtumat ovat kannassa sekaisin.
Lisäys:
---
Noniin.. en sitten tiedä kuinka fiksua tämä on mutta haen kaiken tapahtuma tiedon ja sitten status 1, 2, tai 3 laitan näkyviin. Tavallaan suorituskyvyn kannalta epäilyttävä, mutta muuten ihan ok. Nyt järjestyksessä, ja Grez kenttä on DATE
Laita se Order By ihan viimeksi kyselyssä. Nyt näyttäisi siltä että käytät order by:tä jossain sisäkyselyssä/temporary view:ssä ja sitten sekotat ne ulkokyselyssä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.