reiniger Posted November 25, 2011 Report Share 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 Link to comment Share on other sites More sharing options...
draugz Posted November 25, 2011 Report Share 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 Link to comment Share on other sites More sharing options...
xPtv45z Posted November 25, 2011 Report Share Posted November 25, 2011 ORDER BY date_start DESC? Quote Link to comment Share on other sites More sharing options...
reiniger Posted November 25, 2011 Author Report Share 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 Link to comment Share on other sites More sharing options...
Mr.Key Posted November 25, 2011 Report Share 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 Link to comment Share on other sites More sharing options...
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.