reiniger Posted November 25, 2011 Report Posted November 25, 2011 Sveiki. man ir jaatlasa dati kuros ir norādīti termiņi no līdz. Vēlos panakt ka rāda aktīvus datu pa priekšu ... WHERE date_start != '0000-00-00' AND (date_end = '0000-00-00' OR date_end >= CURDATE()) ... un pēc šiem aktīviem datiem tiktu rādīti dati kurie vēl nav ievadīts date_start ... WHERE date_start = '0000-00-00' ... Bet pagaidām man sanāk ka ir divi dažādi query un divreiz jāizvada datu bāzes saturs. It kā nekas traks bet ja būs daudz dati gribēsies ar LIMIT taisīt pa page. Vai ir iespējams izveidot iekš viena query šāda veida atlasi? Quote
draugz Posted November 25, 2011 Report Posted November 25, 2011 (edited) Nu vienā noteikti ir iespējams ielikt. Tikai diez vai tas tev dos pēc tam iespēju spēlēties ar limit nenoslogojot datubāzi. Vari mēģināt vienkārši SELECT * FROM bla WHERE date_start != '0000-00-00' AND (date_end = '0000-00-00' OR date_end >= CURDATE()) UNION SELECT * FROM bla WHERE date_start = '0000-00-00' Vēl tik pat liels datubāzes grauzējs varētu būt SELECT *, if(date_start='0000-00-00', 0,1) my_order FROM bla WHERE date_start = '0000-00-00' OR (date_end = '0000-00-00' OR date_end >= CURDATE()) order by my_order DESC, date_end DESC Edited November 25, 2011 by draugz Quote
reiniger Posted November 25, 2011 Author Report Posted November 25, 2011 ORDER BY date_start DESC? šoreiz neder jo nepieciešams ... WHERE date_start != '0000-00-00' AND (date_end = '0000-00-00' OR date_end >= CURDATE()) ORDER by date_start ASC Quote
Mr.Key Posted November 25, 2011 Report Posted November 25, 2011 (edited) laukos atlasi papildus kolonnu un nullif(date, '0....'), sortē pēc tās (nulles ies pa beigām). SELECT *, Nullif(date_start, '0000-00-00') AS date_start1 FROM ... ORDER BY date_start1 DESC; No galvas neatceros, bet ja DESC variantā nullus izmet augšā, iemet kaut ko citu tur, lai kārtojas pareizi. EDIT: Kāpēc gan nelietot NULLs jau datos un aizvietot '0000-00-00' ar NULL? EDIT: draugz variants ir līdzīgs. Izaugsmes iespējas priekš performance, protams, ir lielas.. :) Edited November 25, 2011 by Mr.Key Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.