多表查询和MVC框架没有任何关系。我给你说一些常用的方法吧,1. 简单的,select 嵌套 select : select A.c1,A.c2,(select B.c3 from B where A.c4=B.c5) from A where c6=xxx2. 简单的,select多表: select A.c1,A.c2,B.c3,B.c4 from A,B where A.c5=B.c63. 灵活的 join, left join, right join, outer join4. union, union all5. 上面两种或多种混合使用其实难的sql查询还有很多情况,MVC框架不能够帮你进行多表查询的优化,所以优化了一条查询语句,可能就会让你的系统效率更高。仅代表个人愚见,笑纳。

解决方案 »

  1.   


    我只是想知道,在用MVC开发时,是怎么转向到原生态的SQL,是直接在控制里写很多JOIN 这些吗?
      

  2.   

    如果你用的框架有规范,则按照它的规范来写
    如果没有,则原生的 SQL 应该可以。多表查询也是如此。
      

  3.   


    框架有提供一些规范,我是用TP的来做的。之前没有用框架时,就是写了很多的JOIN语句,发现维护起来不容易,如果要修改,要重新去理解去读懂,有可能还会改错了,或范一些比较低级的错误,比如写单引号忘了写之类的。
      

  4.   


    根据框架封装的db类了,查看手册或代码,或者你自己用原生的sql连接去写,数据库部分不用框架。希望对你有帮助。
      

  5.   

    多表联合查询跟mvc有什么关系?你还是没真正理解mvc是什么。把你的联合查询封装在model里,由controller去调来获取数据就可以了。楼上说封装成db的视图,也是一种方法。我发现很少有人在mysql上使用视图。不知为什么。其实视图可以解决很多问题。比如表结构更新后,只需要重新创建视图名称不变就可以了。而不用再去修改代码。可能是现在的新技术太多了,大家都不屑于使用这些老技术了。
      

  6.   

    谢谢各位的意见。
    其实我想针对这种表联合查询的情况,做一个比较好的处理方案,为以后维护方便。最好是能结合类。我之前的系统是用原生态的SQL,发现修改时,容易写错是一个原因,也不好理解这个业务流程。
    如果能把表与表的关系,用类来表现,这个方法不知怎么样。
      

  7.   

    我的系统是用MVC架构的,而一个系统功能里,都会有多表查询的情况。
    那么我想知道的是,各位在使用MVC架构开发时,遇到这种多表查询的情况,是直接用原生态SELECT,还是用视图或者存储过程
      

  8.   

    一般都是 原生态SELECT ,你可以去看看 mvc框架或者cms 的源码就知道了。
      

  9.   

    如果用原生态SELECT连接查询出来的数据,用什么对象接收啊?