Jump to content
php.lv forumi

Atlasīt datus ar dažādiem vaicājumiem...


reiniger

Recommended Posts

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?

Link to comment
Share on other sites

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 by draugz
Link to comment
Share on other sites

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 by Mr.Key
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...