Jump to content
php.lv forumi

date format grupēšana


Rich Bitch

Recommended Posts

man ir tabula (id, title, date).

tabulas laukā `date` glabājas datums (integer), bet laukā title glabājas ieraksta nosaukums.

no šīs tabulas man vajadzētu izgūt visus ierakstus, kas ir veikti no 01.04.2010 līdz 31.07.2010 atsevišķi izdalot cik ieraksti ir ar ievadītu nosaukumu un cik bez (lauks tukšs).

Piemēram:

Datums - Ar nosaukumu - Bez nosaukuma

04.2010 - 20 - 6

 

Varbūt kāds var palīdzēt ar šāda vaicājuma izveidošanu?

Link to comment
Share on other sites

Testēts, protams, nav

SELECT COUNT(NULLIF(TRIM(`title`), '')) AS `Ar nosaukumu`, COUNT(IF(NULLIF(TRIM(`title`), '') IS NULL, 1, NULL)) AS `Bez nosaukuma` FROM `tabula` WHERE DATE(FROM_UNXITIME(`date`)) BETWEEN '2010-04-01' AND '2010-07-31'

Nespratu kas tur par datumu jāizvada... Ja nu kas tad vēl GROUP BY piemet klāt.

Link to comment
Share on other sites

Noteikti daudz efektīvāk būs ar 2 kverijiem:

 

SELECT count(*) FROM `tabula` WHERE `date` BETWEEN unix_timestamp('2010-04-01') AND unixtamestamp('2010-07-31');
SELECT count(*) FROM `tabula` WHERE `date` BETWEEN unix_timestamp('2010-04-01') AND unixtamestamp('2010-07-31') AND `title`='';

 

Pirmais nosaka cik kopā, otrais cik bez virsraksta, attiecīgi, ar virsrakstu ir starpība.

Indexus taisa kā BTREE uz title,date un date

Tādā veidā pirmais kverijs atgriezīs kopējo skaitu, efektīvi izmantojot date indeksu un nepārlasot visus datuma intervāla ierakstus, bet otrais atradīs kokā atzaru ar title='' un tālāk efektīvi izmantos title,date indeksu, lai atrastu kopējo skaitu, nepārlasot visus tā datuma intervāla ierakstus.

Link to comment
Share on other sites

Ok, paldies.

Lai nebūtu jāveido jauns ieraksts, tad vēl viens jautājums par līdzīgu tēmu.

Ir tabula (id, title, date, category)

Lietotājs izvēlas periodu (piem., janvāris 2009 - marts 2010) un viņam tiek izdrukāta tabula:

 

----------------- | janvāris 2009 | februāris 2009 | marts 2009 |

Kategorija 1 | ------- 10 ------ | --------- 2 ------- | -------- 2 ----- |

Kategorija 2 | -------- 3 ------- | --------- 10 ----- | ------- 8 ------ |

Kategorija 3 | -------- 6 ------- | --------- 6 ------- | ------- 1 ------ |

 

Augšā periods, pa kreisi kategorijas id, tabulā ierakstu skaits šajā periodā un šajā kategorijā

 

Kāds varētu būt šis vaicājums?

 

p.s. "-" ir lai vnk būsu atstarpes

Edited by Rich Bitch
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...