zoukankan      html  css  js  c++  java
  • [问题]通过接口进行多表连接查询的问题

    【问题描述】

    假设现在有一个服务器,上面有一个数据库一个程序,你不能直接远程连接它然后SQL查询,但是可以通过发送请求的方式调用接口进行数据查询。但是一个接口对应一张单表,接口只有查询该接口对应的表的信息。
    现在有一个问题就是,如果我要查询多表连接的数据,在服务器上的程序代码无法更改的情况下该如何实现?

    【问题分析】

    首先,了解该场景中的限制条件:

    1、每个接口只能针对一张表进行查询。

    2、多表连接包括外连接、内连接、交叉连接:

      左外连接: 

    select * from table1 a left out join table2 b on a.name = b.name
    

          右外连接

    select * from table1 a right out join table2 b on a.name = b.name
    

         完全外连接

    select * from table1 a full out join table2 b on a.name = b.name
    

        内连接

    select * from table1 a inner join table2 b on a.name = b.name
    

        交叉连接

    select * from table1 a cross join table2 b where a.name = b.name
    

    【解决方案】

     在了解了多表连接的所有类型以后,剩下的就是怎么实现的问题。

     最直接的方式就是创建一个查询类,在类中创建以上的多表连接方法,分别进行具体代码的实现即可。当然也可以通过策略模式,为每一个类型的多表连接创建一个类,分别进行代码实现。

     以左外连接为例:

     做外连接查询的查询结果要求 属于左表的所有行数据都必须查询出来,而右表则需要根据条件查询出结果与左表进行匹配,若左表中的数据在右表中找不到对应结果,则最终结果属于右表的字段要用null表示。

    所以:

            1、创建一个结果类Result,包括table1,table2的所有字段。

            2、创建一个Map集合,key为条件字段值,value为Result

            3、首先根据条件查询出左表table1的所有数据,并写入集合Map<String,Result>中。

            4、根据条件查询出右表table2的所有数据,并根据key值,将所有值写入Result类中。

            5、获取集合的value,并返回。

  • 相关阅读:
    my first android test
    VVVVVVVVVV
    my first android test
    my first android test
    my first android test
    ini文件
    ZZZZ
    Standard Exception Classes in Python 1.5
    Python Module of the Week Python Module of the Week
    my first android test
  • 原文地址:https://www.cnblogs.com/liuyp-ken/p/12973711.html
Copyright © 2011-2022 走看看