你想得到的是:
1、文章列表
2、文章列表中,每篇文章对应的tags
我建议你通过3条SQL来完成:
1、获得文章列表
SELECT * FROM `posts`
2、获得文章tags id
SELECT `post_id`,`tag_id` FROM `relationships` WHERE `post_id` IN (...)
建议存入post_id => tag_ids数组,如
$post_tags = array(
1=>array(1,2,3),
2=>array(2,3,5),
);
3、将用到的tag存入数组
SELECT `id`,`tag` FROM `tags` WHERE `id` IN (...)
得到id=>tag
如
$tags = array(
1=>'火车',
2=>'飞机',
);
4、遍历文章列表,并根据tags列表,对tags进行输出
最后:
诸如tags表,建议采用keyvalue数据库进行存储,如memcached、tokyo cabinet、redis等
诸如relationships表,建议复制一份到posts表,以text 1,2,3,4这样的形式存储。relationships表主要用于根据tag对文章进行检索用