2014-01-30 16 views
0

我有20桌Table100到Table119,所有表具有相同的結構,名稱,STAFFID是,DEPTID,說明MySQL的 - 在X表重複計數總結

是否有可能通過MySQL來算不同的名稱,統計不同的StaffID,每個表的記錄數?即20次?可以添加類似

Table100, 12, 15, 120 
Table101, 10, 10, 130 
etc.. 

附加表

輸出,但他們都將開始「Tablexxx」

我可以執行此使用PHP/Perl的,但我期待在通過本地SQL運行此。

感謝

+0

SQL不*不*支持多重表上沒有使用動態查詢和/或程序代碼。您可以使用適當的JOIN/output-clause-subselect/UNION ALL,但需要手動複製每個與表相關的查詢。 – user2864740

回答

2

你需要建立一個查詢要做到這一點,是這樣的:

select 'Table100' as which, count(distinct name) as NumNames, count(distinct StaffId) as NumStaff, count(*) as NumRecs from Table100 union all 
select 'Table101' as which, count(distinct name) as NumNames, count(distinct StaffId) as NumStaff, count(*) as NumRecs from Table101 union all 
select 'Table102' as which, count(distinct name) as NumNames, count(distinct StaffId) as NumStaff, count(*) as NumRecs from Table102 union all 
. . . 
select 'Table120' as which, count(distinct name) as NumNames, count(distinct StaffId) as NumStaff, count(*) as NumRecs from Table120; 

在SQL中,有沒有辦法「循環」了一組表。你必須明確提及它們。您可能可以在應用程序中構建查詢。或者,您可以使用Excel等工具構建查詢。

說了這麼多,用相同的格式很多表建議與數據結構的問題。一般來說,最好將這些數據存儲在一張表中,而不是分割成許多表格。

+0

感謝您的信息。我同意重新組織結構,但有很多表格,因爲每個表格都分配給一個客戶端,允許客戶完全控制他們的表格等。我想對所有類似的表格進行統計。 – Olagg

+0

@Olagg。 。 。這實際上是擁有多個表的一個很好的理由。你可以創建一個將所有數據放在一起的視圖(儘管MySQL不允許'from'子句中的子查詢,MySQL允許在視圖中使用'union all')。 –