iT邦幫忙

0

Mysql 多個table 如何有效率且快速的做統計

目前老闆想開幾家小公司做線上交易, 我想每個公司各開一個table及完全獨立的程式目錄, 各自獨自運行. 不過對老闆端, 想看到即時的全部業績統計, 又會比較麻煩, 還是全部放在同一個table, 但是這様做,在權限控管上, 程式又比較麻煩寫了. 不知有沒有高手可以分享經驗的.

fillano iT邦超人 1 級 ‧ 2009-06-05 11:40:39 檢舉
一個公司開一個table?一個table就可以把所有事情做完?
我看到的重點是
1.「幾家」
2.小「公司」
3.「線上交易」

真是高手高手高高手
厲害厲害
建議先去pchome商店街或yahoo超級商城開店,然後把省下來建置的錢全部砸在行銷上,等做個二三年,對網路行銷比較有經驗後再來建置自已的購物網站
20
doesjudas
iT邦新手 2 級 ‧ 2009-06-05 15:33:35
最佳解答

歸納常見作法有三種.
1 單一table+公司別欄位: 簡單方便, 適用公司少, 資料不多的狀況.
2 多公司table: 公司資料拆開存放, 效率較好, 但新增公司與資料欄變更會比較麻煩些.
3 多公司資料庫: 與多公司table作法相似, 更清楚明確.

你的前提是 (幾家+小公司), 比較建議用第一種.

看更多先前的回應...收起先前的回應...
stellayan iT邦新手 4 級 ‧ 2009-06-05 17:26:34 檢舉

如果是第3種的話, 在做統計時, 有沒有什麼好技巧
因為如果是第一種的話, 一個sql指令就可以取出全部的業績統計了
第二種或第三種的話, 我還不知怎麼寫sql指令

doesjudas iT邦新手 2 級 ‧ 2009-06-05 17:36:15 檢舉

老實說, 我也是 SQL 肉腳啦.
至少可以土法煉鋼, 用程式來搞定.
我不習慣依賴用 SQL 語法完成複雜的功能, 這樣有個好處, 程式比較容易看的懂.

如果你的DB是同一台機器,只是Database不同,你只要在下達指令時,同時指定db_name.table_name 即可,例如:Select A.*,B.* From DB_A.Table_Name A,DB_B.Table_Name Where ........。當然,前提是你使用的資料庫連接身份,必須同時擁有 DB_A 和 DB_B的權限。 希望對你有幫助~

stellayan iT邦新手 4 級 ‧ 2009-06-06 11:06:40 檢舉

謝謝 原來最簡單的用法就在原來的語法裡
我本來就擁有所有資料庫的權限的 因為在同一台機器裡
所以我可以將每家的資料庫都分不同database來存放
便於各家自行設定
但在做老闆要的統計時 用此語法取出需要的數據出來合計即可

24
pcboy
iT邦高手 1 級 ‧ 2009-06-05 11:19:34

老闆想看到即時的全部業績統計
用 union 敘述 可以結合多個 table 的結果輸出

就 coding 角度而言,全部放一起會比較好維護

20
bigredinf
iT邦新手 4 級 ‧ 2009-06-05 11:51:57

如果是我的作法會用一個table,加個[公司別]的欄位,
根據登入者的公司別紀錄在欄位上,個別登入者只能查
該公司別的紀錄。至於老闆要統計,就把公司別的欄位忽略,
甚至可以根據公司別作統計,都很方便。

20
ricky0512
iT邦新手 5 級 ‧ 2009-06-05 13:03:11

聽起來有點像要用同一套程式跑在不同的位址的感覺
有些程式會用 prefix table name 就是在每個 table 之前加一個字串
當然,這樣子的話,你的情況統計就得合併 table 來處理了

stellayan iT邦新手 4 級 ‧ 2009-06-05 14:18:06 檢舉

對 就是同一套程式 跑在不同的位址/domain給不同公司來用, 但是裡面的一些資料又不一定每家公司都一樣的. 如果我開不同的database 那各家的設定參數都可以由各家自行設定, 可是在做統計時, 又不知該如何合併, 如果開在同一個database裡, 那每個參數都要參考到公司別的狀況

我要發表回答

立即登入回答