我在MySQL數據庫a_ad_display表格式如下如何使用UNION ALL查詢獲取這是不是在表中的記錄?
╔═════════════╦═════════╦═════════╦═════════════════════╗
║ addisplayId ║ restId ║ clicked ║ displaytime ║
╠═════════════╬═════════╬═════════╬═════════════════════╣
║ 1 ║ 20707 ║ 0 ║ 2013-03-07 10:50:55 ║
║ 2 ║ 20707 ║ 1 ║ 2013-03-07 10:55:55 ║
║ 3 ║ 20711 ║ 1 ║ 2013-03-08 12:50:55 ║
║ 4 ║ 20712 ║ 1 ║ 2013-03-08 01:50:55 ║
║ 5 ║ 20707 ║ 1 ║ 2013-03-08 10:50:55 ║
║ 6 ║ 20708 ║ 1 ║ 2013-03-09 12:50:55 ║
║ 7 ║ 20707 ║ 1 ║ 2013-03-09 09:50:55 ║
║ 8 ║ 20708 ║ 0 ║ 2013-03-10 10:50:55 ║
║ 9 ║ 20708 ║ 0 ║ 2013-03-11 11:50:55 ║
║ 10 ║ 20707 ║ 0 ║ 2013-03-11 12:50:55 ║
╚═════════════╩═════════╩═════════╩═════════════════════╝
現在我想的是,如果當前的日期是2013年3月12日與過去7天的數據
,以獲取restId記錄然後我想的2013年3月5日的數據顯示,以2013年3月11日
DISPLAY TIME CLICKED count of row(impression)
March, 05 2013 00:00:00+0000 0 0
March, 06 2013 00:00:00+0000 0 0
March, 07 2013 00:00:00+0000 1 2
March, 08 2013 00:00:00+0000 1 1
March, 09 2013 00:00:00+0000 1 1
March, 10 2013 00:00:00+0000 1 1
March, 11 2013 00:00:00+0000 0 1
我想忽略timing..just希望把重點放在迄今擷取記錄日期明智 我想獲取記錄與restId = 10707同該日期和打印0中點擊,還行總數爲表日期和點擊該日期,如果沒有在表中,其未來在上週的日期的任何日期沒有記錄,那麼它應該打印的總和以0
我已經在SQL小提琴製作一個虛擬表也行數列應用於此查詢,但它不是working..so任何人都可以請指導我...我知道它很複雜,如果understand..but你對我的problem..then將清除u到從你側的解決方案的任何問題..
以下是我的查詢這不給予適當的數據
select
displaytime,
sum(impression) as clicked,
(count(impression) -1) as impressions
from (
select
displaytime,
a_ad_display.clicked as impression
from
a_ad_display
where
a_ad_display.displaytime
BETWEEN
date_add(CONVERT_TZ(CURDATE(),'+00:00','-11:00'), interval -6 day)
AND
CONVERT_TZ(CURDATE(),'+00:00','-11:00')
and
restId=10708
group by
a_ad_display.displaytime
union distinct
select
CONVERT_TZ(CURDATE(),'+00:00','-11:00'), 0
union distinct
select
date_add(CONVERT_TZ(CURDATE(),'+00:00','-11:00'), interval -1 day), 0
union distinct
select
date_add(CONVERT_TZ(CURDATE(),'+00:00','-11:00'), interval -2 day), 0
union distinct
select
date_add(CONVERT_TZ(CURDATE(),'+00:00','-11:00'), interval -3 day), 0
union distinct
select
date_add(CONVERT_TZ(CURDATE(),'+00:00','-11:00'), interval -4 day), 0
union distinct
select
date_add(CONVERT_TZ(CURDATE(),'+00:00','-11:00'), interval -5 day), 0
union distinct
select
date_add(CONVERT_TZ(CURDATE(),'+00:00','-11:00'), interval -6 day), 0
) as x
group by
date(displaytime)
order by
displaytime
請忽略代碼CONVERT_TZ(CURDATE(),'+00:00','-11:00')
怎麼一回事,因爲它只是我的日期轉換爲UTC的用戶時區...
這裏是我的SQL小提琴鏈接 http://sqlfiddle.com/#!2/73f07/1
thanx的answer..its worked.but爲什麼這不是一個乾淨的解決方案? – 2013-03-12 08:57:03