这种用简单的通过关键词(keyword)查找实现的相关文章的方法有很大的不一样,请高手给出一个高效的方案
解决方案 »
- 有red linux版的dreamweaver吗????
- 请问能在两个php界面之间用checkbox的value传递一个mysql的sql语句吗?
- gzip: stdin: invalid compressed data--crc error
- php Parse error: syntax error, unexpected T_VARIABLE 错误
- 求助:使用模版phplib template 如何实现分页?
- PHP是可以对非静态形式的方法进行静态形式的调用的。
- 请教个问题,在PHP里,大家都怎么用session和cookie的。
- 选中多个复选框,如何把多个值保存到同一字段当中,每个字段用逗号隔开
- 问:怎样将一个数组按照每一行的第三个“|”后的数字的大小进行排列?
- 单个项目写了一万行代码是什么水平
- 谁用PHP开发过统计股票行情的软件
- 高手帮忙...imap接收邮件例子
某人买了A,B两本书,则在此表中写入:
A,B,1
B,A,1
另一个人也买了这两本,则数据库中变为
A,B,2
B,A,2
第三个人买了A,B,C三本书,则数据库变为:
A,B,3
B,A,3
A,C,1
B,C,1
C,A,1
C,B,1
查购买A书的顾客还买过: select bookid2 from table where bookid1='A' order by 购买次数
得出 B(3次) C(1次)
newbookid,buyedbookid1,id
newbookid,buyedbookid2,id
newbookid,buyedbookid3,id
newbookid,buyedbookid4,id
newbookid,buyedbookid5,id
newbookid,buyedbookid6,id
newbookid,buyedbookid7,id
newbookid,buyedbookid8,id
newbookid,buyedbookid9,id
newbookid,buyedbookid10,id
楼上的库在查询"购买本书的顾客还买过那些书时"比较方便,但入库时比较麻烦,我的想法是:建一个表
id 编号
bid 购买图书的id
cid 顾客的id
当某人购买某本书时,只需把(id,bid,cid)入库,
查询"购买本书的顾客还买过那些书时"要分二步:
第一步查出购买此书的顾客放入一个临时表:select cid from table where bid="34"
第二步查出临时表中顾客还购买了那些书:
select bid from table where cid in (select cid from table where bid="34");这两种方法在大数据量的条件时,百万级那一种效率更高一些,请有经验的高手指点
select distinct cid from table where bid="34"
因为有个顾客可能先后买两本一样的书,所以去掉重复的第二步也要修改一下:
select bid,count(*) as cnt from table where cid in (select distinct cid from table where bid="34") and bid<>'34' group by bid order by cnt desc; 这样写有三个目的:
1.去掉bid=34的书本身(bid<>'34')
2.bid会有重复的,所以要以bid分组,因为要得到购买次数,所以也要以bid分组(group by bid)
3.应该能够知道哪些书和bid=34的这本书的相关程度高,所以需要以购买次数进行排序,所以要用count(*)得到购买次数这个查询变得非常复杂,因为有in,导致索引失效,数据库要进行全表查询,对于大数据量的表格来说是不可能完成的任务我上面提到的方法有如下优势:
1.不需要进行实时的同步插入修改操作,可以在后台设置一个程序,每天根据当天的购买记录定时统计
2.完全通过主键查询,查询速度非常快(这点对于前台需要及时呈现的内容来说是非常重要的)希望还有更好的方法
30000*1*2*3*4*5*6*7*8*9*10 结果是不可想象,有没有更好的办法解决.
假设A买了3本书b1,b2,b3,表里的记录就是:
b1 b2
b2 b3
b3 b1
如果B买了2本书b2,b4,表里就会加一条记录
b2 b4
这样,只要写很简单的查询就可以知道书的关联情况了
假设A买了3本书b1,b2,b3,表里的记录就是:
b1 b2
b2 b3
b3 b1
如果B买了2本书b2,b4,表里就会加一条记录
b2 b4
这样,只要写很简单的查询就可以知道书的关联情况了
跟前几楼说的方法不一样,不要把买书的id记进去,这样记录数太大
只要记书的id就行,重复的记录数据库会去掉的
在book1列上做上索引,查询很快的
只是入库的时候要计算一下组合, 用程序做也不麻烦 :)