#46547284 · 22 Dec 2015, 21:02 · · პროფილი · პირადი მიმოწერა · ჩატი
მოკლედ თავი ამეხადა რა და იქნებ თქვენ მირჩიოთ რამე ასეთი ცხრილი მაქვს
SQL | CREATE TABLE `visitors` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `ip` VARCHAR(32) NOT NULL, `browser` VARCHAR(500) NOT NULL, `version` VARCHAR(500) NOT NULL, `platform` ENUM('w','l','m') NOT NULL, `date` DATE NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `person` (`ip`,`date`) ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
|
ეხლა მინდა რომ დავასელექტო ინფო
SQL | SELECT DATE(`date`) AS `date`, IFNULL(COUNT(*), 0) AS `visitor` FROM `visitors` WHERE (`date` >= (NOW() - INTERVAL 7 DAY)) GROUP BY `date`;
|
მიბრუნებს ამას
QUOTE | date visitor 2015-12-19 2 2015-12-22 5
|
მე კიდე მინდა რომ დამიბრუნოს ესე
CODE | date visitor 2015-12-17 0 // Make 0 for the day which is not present 2015-12-17 0 // Make 0 for the day which is not present 2015-12-18 0 // Make 0 for the day which is not present 2015-12-19 2 2015-12-20 0 // Make 0 for the day which is not present 2015-12-21 0 // Make 0 for the day which is not present 2015-12-22 5
|
ეს IFNULL არ მუშაობა რა არ ვცადე case-ით ვცადე UNION SELECT-ებით ვიღებდი დღეებს და ისე ვეძებდი მარა ჩემი ფეხები
არ შვება რა
იქნებ თქვენ შემომეშველოთ რა...
P.S. მანდ 1 კვირაზე მაქვს გაკეთებული მაგრამ 1 წელზე თვეების მიხედვით უნდა ამომიღოს და ყველას ამოღება თუ დავაპირე წლების მიხედვით
და ეს ქუერები როგორ გავაკეთო ვერ გავიგე რა დათქვენს იმედზე ვარ ..
მადლობა წინასწარ... * * * მოკლედ stackowerflow-ზე შემომთავაზეს ეს ვარიანტი
SQL | SELECT compare_date AS `date` , COUNT(v.`date`) AS `count` FROM ( SELECT DATE(NOW() - INTERVAL @nr:=@nr+1 DAY) AS compare_date FROM information_schema.COLUMNS, (SELECT @nr:=-1) AS tmp LIMIT 7 ) AS d LEFT JOIN `visitors` v ON v.`date` = compare_date GROUP BY compare_date;
|
ეს მუშაობს
მაგრამ იგივენაირად რომ ვშვები თვეზე ან წელსე
SQL | SELECT compare_month AS `month` , COUNT(v.`date`) AS `count` FROM ( SELECT MONTH(NOW() - INTERVAL @nr:=@nr+1 MONTH) AS compare_month FROM information_schema.COLUMNS, (SELECT @nr:=-1) AS tmp LIMIT 12 ) AS m LEFT JOIN `visitors` v ON v.`date` = compare_month GROUP BY compare_month;
SELECT compare_year AS `year` , COUNT(v.`date`) AS `count` FROM ( SELECT YEAR(NOW() - INTERVAL @nr:=@nr+1 YEAR) AS compare_year FROM information_schema.COLUMNS, (SELECT @nr:=-1) AS tmp LIMIT 5 ) AS Y LEFT JOIN `visitors` v ON v.`date` = compare_year GROUP BY compare_year;
|
რეალურად თვეებისა და წლების ჩამონათვალს მაძლევს მაგრამ count-ს არ აკეთებს
ამასი მაინც იქნებ გამარკვიოთ რას ვაკლებ???
--------------------
ვებ პროგრამისტების საყურადღებოდ http://jobs.ge/119262/
|