2013-04-15 91 views
1

我試圖編寫一個查詢,其中包含許多MySQL視圖。我使用的MySQL版本是亞馬遜AWS RDS服務提供的最新版本。這些觀點是這樣的:跨越多個相似視圖的MySQL查詢

視圖1:

  • Col1中 「AAA事件計數」:時間戳
  • col2的:數

查看2:

「的BBB活動計數」
  • Col1:時間戳
  • Col2:計數

我有大約100個這些意見。

我想有塑造這個數據看起來像這樣的查詢:

  • Col1中:時間戳
  • col2的:數
  • COL3:事件類型

這意味着數據看起來像:

2013-01-01T00:00:00Z 10  BBB 
2013-01-01T00:00:00Z 10  AAA 
2013-04-10T00:00:00Z 26  AAA 
2013-04-10T00:05:00Z 28  AAA 

時間戳不會是唯一的,但時間+事件類型的組合是唯一的。

我已經嘗試了各種各樣的方法,但沒有給我任何我想要的東西。性能不是問題,因爲這些是摘要報告,而不是OLTP查詢。

對此有什麼建議嗎?

+0

只有MySQL或php + mysql的? – Sebas

+0

只是MySQL。實際上,我將查詢結果拖到Excel中作爲數據透視表的輸入。 –

+0

''SELECT TABLE_NAME,count(*)FROM information_schema.'TABLES' WHERE TABLE_TYPE LIKE'VIEW'AND TABLE_SCHEMA LIKE'database_name'GROUP BY table_Name;''可能讓你開始(100%未經測試)。雖然你失去了這個時間戳,所以這是行不通的。我希望你不需要UNION每個視圖。 – Scotch

回答

1

SELECT Col1中,col2的, 「AAA」 AS COL3 FROM視圖1

UNION ALL

SELECT Col1中,col2的, 「BBB」 AS COL3與視圖2

UNION ALL

SELECT Col1中,Col2,「CCC」AS Col3 FROM View3

UNION ALL

。 。 。

等等。

0

從上面的鄉親幫助下,最後的結果是這樣的:

Select * from 
(
    (SELECT PointInTime, (Col1+Col2+Col3) as Failures, "ApiName1" FROM Table1) 
    union all 
    (SELECT PointInTime, (Col1+Col2+Col3) as Failures, "ApiName2" FROM Table2) 
    order by PointInTime 
) as X; 

使用子查詢的讓我塑造的最後一列名字,我應該需要。

這讓結果看起來像:

PointInTime FailedBuckets  API 
2013-01-01   0   ApiName1 
2013-01-01   1   ApiName2 
2013-01-02   0   ApiName1 
2013-01-02   1   ApiName2