作者grence (多想两分钟 = =")
看板Database
标题Re: [SQL ] 存取多个资料表
时间Mon Dec 22 02:29:07 2008
※ 引述《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