2009-04-12 21 views
0

我最近開始了一個項目的工作,該項目涉及爲負責管理某些訪問控制硬件(例如電子門鎖)的相當老的軟件創建基於Web的報告界面。
我選擇了CakePHP來完成任務,它涉及到查詢數據庫中的日誌記錄並在網站上顯示它們。該軟件是用C++編寫的,並使用MSDE(Microsoft SQL Server 7.0或2000的縮小版本),我可以配置CakePHP以便成功連接到數據庫。作爲一個統一查詢來自多個集羣表的數據

問題是,該軟件的開發人員已選擇通過爲每一天創建單獨的表來將日誌存儲在數據庫中。所以它看起來像這樣:

tbl_DoorEvent_2008_08_07 
tbl_DoorEvent_2008_08_08 
tbl_DoorEvent_2008_08_09 
tbl_DoorEvent_2008_08_10 
... 

我並不真正熟悉MSDE但我仍然懷疑這是否是設計和維護這樣一個數據庫中可以接受的做法。我不知道桌面軟件如何管理查詢所有信息,但是我的CakePHP應用程序真的很難咀嚼這些信息。

我想堅持使用MVC的Web應用程序,但我不知道如何在CakePHP中實現DooreventModel,以便它從所有分區表中獲取信息。
我試過執行一些黑客喜歡使用

UNION ALL SELECT * FROM tbl_DoorEvent_2008_08_07 
UNION ALL SELECT * FROM tbl_DoorEvent_2008_08_08 
.... 

和這類作品,但是當我想執行WHERE對整個查詢或任何其他SQL操作這是行不通的限制。

另外一個請求是基於Web的應用程序不添加或創建任何額外的數據庫或表,只使用現有的顯示報告,以便創建一個包含所有聚集的表的巨大表不是真的是一個選擇。

我只希望有人會想出一個SQLServer函數,它會在我每次執行查詢時將所有表合併成一個表,但我知道這有點樂觀,所以我非常樂於接受所有建議。 請記住,該解決方案必須與CakePHP一起使用,並作爲MVC中的單個模型使用。

+0

plzsendzmetehcode? – 2009-04-12 14:23:19

+0

米奇,什麼代碼? – duckyflip 2009-04-12 14:27:02

回答

3

您可以使用WHERE語句,如果你把工會在子查詢:

SELECT * 
FROM (
    SELECT * FROM tbl_DoorEvent_2008_08_07 
    UNION ALL 
    SELECT * FROM tbl_DoorEvent_2008_08_08 
) sub 
where sub.MyKey = MyValue 

或者創建一個視圖:

CREATE VIEW vw_MyView 
AS 
SELECT * FROM tbl_DoorEvent_2008_08_07 
UNION ALL 
SELECT * FROM tbl_DoorEvent_2008_08_08 

之後,你可以查詢視圖:

SELECT * from vw_MyView where MyKey = MyValue 

PS不要在生產查詢中使用*,特別是不能查看。

相關問題