Rich Bitch Posted July 26, 2010 Report Share Posted July 26, 2010 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? Quote Link to comment Share on other sites More sharing options...
marcis Posted July 26, 2010 Report Share Posted July 26, 2010 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. Quote Link to comment Share on other sites More sharing options...
codez Posted July 26, 2010 Report Share Posted July 26, 2010 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. Quote Link to comment Share on other sites More sharing options...
Rich Bitch Posted July 26, 2010 Author Report Share Posted July 26, 2010 (edited) 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 July 26, 2010 by Rich Bitch 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.