Re: [SQL ] 存取多個資料表
※ 引述《luxuryEX (戴汶)》之銘言:
: 我是使用MYSQL +PHP
: 我現在在做一個圖書館的系統
: 為了穩定性的問題
: 我在DB裡面按月份建了12個資料表
: 這12個資料表長得一模一樣
: 存資料的時候就會按建立該筆資料的月份存進對應的資料表裡面
: 但問題來了,要如何存取多個資料表呢?
: 譬如我要從12個資料表裡面搜尋類似的書
: 以下是我寫的SQL語法:
: $sql = "SELECT title,author,publisher,isbn
: FROM 01jan, 02feb, 03mar, 04apr, 05may, 06jun, 07jul, 08aug,
: 09sep, 10oct, 11nov, 12dec
: WHERE title like '%".$TITLE."%'
: ORDER BY `datetime` DESC";
錯的原因很簡單,dbms都告訴你了,它分不出
SELECT title,author,publisher,isbn
裡的title指的是哪個table的欄位,
01jan.title、02feb.title…欄位名稱都叫title;
同理
WHERE title like '%".$TITLE."%'
這段它也不知道要比哪一個title…雖然這裡的錯誤訊息還沒跑到那裡
解法已經有人說過了,這裡也是騙 P幣XD
: 出現的錯誤訊息是:
: Column 'title' in field list is ambiguous
: 請問我該怎麼改語法呢?
: 先謝謝各位前輩!
原PO老師的理論依據應該像這個
http://en.wikipedia.org/wiki/Partition_(database)
其中是有直接複製 TABLE的作法,實作還滿少用到的,但不是沒有。
目前用到這種作法都不是為了效率,通常是備份資料備查,
EX:會計未收款資料 (異動頻繁,又需要記錄異動前後的資料…)
該 TABLE 11月的資料在 12月的時候也會修改,
有時候使用者要把 12月異動的資料也算進去,有時候又不要,
為了實作此需求,每個月都會把到上個月的資料通通做成一個新的 TABLE....
會這麼做,我想可能的原因是舊程式難改、DB備份功能比分割TABLE完善....
但如果是為了存取效率這麼做…
1.效能改善有限。主要差別應該是能平行處理,但是一顆硬碟的讀寫頭數量是固定的
2.程式不好寫…目前的DBMS能幫忙做的事情不多;也可能只是因為很少寫這類東東XD
3. ...以上兩點已經夠了
如果只是作業,瞭解老師想說的是啥就差不多了吧....我想。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.195.167
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):