wordpress的多表查询

首先说,我是为了做我自己搭建的wordpress博客的手机版才写的。博客地址:http://gavin.youthol.cn/

快中午一点了,我写这篇文章,我会说我还没有吃饭么!今天是研究wordpress数据表的第二天,昨天中午也是,没有吃饭,晚上去吃的麻辣刀削面。
好了,闲话不说了,赶紧上货,还能赶上长廊的黄花菜没有凉!
先说说我的目的吧,我是想做一个博客的手机端,用的死JQM(Jquery Mobile),按照官方文档,做一个页面还是很简单的,重点就在于链接我自己的wordpress数据库。
下面是自己的一张效果图:
腾讯手机管家截屏2013082701

因为我的博客是放在了我们网站的linux服务器上,我想写个数据库连接的文件在另外一个服务器上链接数据库,可是,结果是让人悲痛的,提示了好多好多的错误,得出结果也就是一个,那就是不能从外部链接数据库。
所以,我把数据库链接文件放到服务器上,并且SQL语句的执行都是在服务器上,这样才解决了第一个大的问题。
第二个问题,wordpress中的数据表并不多,共13个,不要以为13个数据表很多了,比起来dedecms还有phpwind,这就是小巫见大巫了。
先看看我的博客,有几个目录,分为为:C语言,心情日记,UBUNTU,WORDPRESS,微信OPEN,还有一个关于Gavin的页面,当我点击C语言的时候,就会列出C语言目录下的文章,这样看来数据库应该很简单对不对,可是,事情远远没有想象的那么简单!
如果我们单纯的分析wp_posts数据表的话,为什么是这个,因为你这个数据表里面存放有每一篇文章的状态,内容,标题,发表时间,还有标签,但是我们却丝毫找不到可以下手来写SQL语句,这也是我昨天忙了一天都没有头绪的原因,找错地方了!
我在开源中国论坛提问,问wp_terms和wp_posts有什么关系,结果有人说注意一个表,wp_term_relationships,这才是曙光啊!
这里面总共有三个字段。object_id,term_taxonomy_id,term_order,下面来参考一下一篇博文:WordPress数据库及各表结构
可以知道
wp_term_relationships
object_id:对应文章ID/链接ID
term_taxonomy_id:对应分类方法ID
term_order:排序

也就是说我们可以提取出来这样一条语句:

wp_posts.id = wp_term_relationships.object_id

继续挖,打开数据表wp_term_taxonomy,有两个字段很重要,term_taxonomy_id与term_id,继续参考博客来看:
wp_term_taxonomy
term_taxonomy_id:分类方法ID
term_id:taxonomy:分类方法(category/post_tag)

联系上一个数据表,我们又可以提取出这样一条语句:

wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id

继续挖!打开表wp_terms,会看到一个字段,term_id是不是和上面一个表中的一样?
我们就可以提炼出最后一条语句!

wp_term_taxonomy.term_id = wp_terms.term_id

挖到这,差不多挖到祖坟了!
下面来写SQL语句,以查询“微信OPEN”下的文章为例,获取标题和内容

SELECT post_content, post_title
FROM wp_posts, wp_term_relationships, wp_term_taxonomy, wp_terms
WHERE wp_posts.id = wp_term_relationships.object_id
AND wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
AND wp_term_taxonomy.term_id = wp_terms.term_id
AND wp_terms.term_id =33

OK,饿死了!

发表评论

电子邮件地址不会被公开。 必填项已用*标注