下面是数据库结构,Relationships是文章表和类别、标签表的关系表,他们是多对多。
我现在在aid=1的详情页面,查询相同相同类别的文章。 这个sql语句怎么写?
目前实现了想要的功能,感谢 @rockman
$midSql = 'SELECT relationships.mid FROM relationships INNER JOIN metas ON metas.mid = relationships.mid WHERE relationships.aid = :aid AND metas.type = "category"';
$aidSql = 'select relationships.aid from relationships where relationships.aid != :aid AND relationships.mid IN ( '.$midSql.' )';
$sql = 'select articles.aid,articles.title fromarticles where articles.aid IN ( '.$aidSql.' )';
可能你们能有更好的方案,可以一起探讨下。
Metas 类别、标签表
category是类别,tag是标签
Articles 文章表
aid、title、created、modified、text、viewNum
1 title1
2 title2
3 title3
Metas 类别、标签表
mid、name、count、parent、type
1 、category1、0、0、category
2 、category1、3、1、category
3 、 tag1、 3 、0、tag
Relationships 关系表
aid、mid
1、2
1、3
2、2
2、3
3、2
3、3
建议写个视图,直接查询多个数据库,速度很成问题的,你可以这样 create view V_Select ( @name nvarchar(20) ) as begin select a.* from ( select * from 数据库名.dbo.table1 union all select * from 数据库名.dbo.table2 ..... )a where isnull(@name,'')='' or name='张三' end 说明一下: 因为你要查询10个数据库的表,必须这10个数据库你都可以在此数据库访问的到,这是基本条件 我连接每个表的数据是用union all,这是所有数据均包含,如果你要去掉重复数据,就用union 不明白,就接着问,OK,请采纳
答案来源网络,供参考,希望对您有帮助
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。