1717import static zuo .biao .apijson .JSONObject .KEY_COLUMN ;
1818import static zuo .biao .apijson .JSONObject .KEY_COMBINE ;
1919import static zuo .biao .apijson .JSONObject .KEY_DATABASE ;
20+ import static zuo .biao .apijson .JSONObject .KEY_FROM ;
2021import static zuo .biao .apijson .JSONObject .KEY_GROUP ;
2122import static zuo .biao .apijson .JSONObject .KEY_HAVING ;
2223import static zuo .biao .apijson .JSONObject .KEY_ID ;
@@ -96,6 +97,7 @@ public abstract class AbstractSQLConfig implements SQLConfig {
9697 private String group ; //分组方式的字符串数组,','分隔
9798 private String having ; //聚合函数的字符串数组,','分隔
9899 private String order ; //排序方式的字符串数组,','分隔
100+ private Subquery from ; //子查询临时表
99101 private List <String > column ; //表内字段名(或函数名,仅查询操作可用)的字符串数组,','分隔
100102 private List <List <Object >> values ; //对应表内字段的值的字符串数组,','分隔
101103 private Map <String , Object > content ; //Request内容,key:value形式,column = content.keySet(),values = content.values()
@@ -110,7 +112,6 @@ public abstract class AbstractSQLConfig implements SQLConfig {
110112 private int query ; //JSONRequest.query
111113 private int type ; //ObjectParser.type
112114 private List <Join > joinList ; //连表 配置列表
113- private List <Subquery > subqueryList ; //子查询 配置列表
114115 //array item >>>>>>>>>>
115116 private boolean test ; //测试
116117 private boolean cacheStatic ; //静态缓存
@@ -454,6 +455,15 @@ public String getOrderString() {
454455 }
455456
456457
458+ @ Override
459+ public Subquery getFrom () {
460+ return from ;
461+ }
462+ @ Override
463+ public AbstractSQLConfig setFrom (Subquery from ) {
464+ this .from = from ;
465+ return this ;
466+ }
457467
458468 @ Override
459469 public List <String > getColumn () {
@@ -745,18 +755,6 @@ public boolean hasJoin() {
745755 return joinList != null && joinList .isEmpty () == false ;
746756 }
747757
748- @ Override
749- public List <Subquery > getSubqueryList () {
750- return subqueryList ;
751- }
752- @ Override
753- public void setSubqueryList (List <Subquery > subqueryList ) {
754- this .subqueryList = subqueryList ;
755- }
756- @ Override
757- public boolean hasSubquery () {
758- return subqueryList != null && subqueryList .isEmpty () == false ;
759- }
760758
761759 @ Override
762760 public boolean isTest () {
@@ -1688,6 +1686,11 @@ public static String getSQL(AbstractSQLConfig config) throws Exception {
16881686 private static String getConditionString (String column , String table , AbstractSQLConfig config ) throws Exception {
16891687 String where = config .getWhereString (true );
16901688
1689+ Subquery from = config .getFrom ();
1690+ if (from != null ) {
1691+ table = config .getSubqueryString (from ) + " AS " + config .getKey (from .getFrom ()) + " " ; //TODO Comment:c 转为 AS `Comment:c`
1692+ }
1693+
16911694 String condition = table + config .getJoinString () + where + (
16921695 RequestMethod .isGetMethod (config .getMethod (), true ) == false ?
16931696 "" : config .getGroupString () + config .getHavingString () + config .getOrderString ()
@@ -1866,6 +1869,7 @@ else if (id instanceof String) {
18661869 String database = request .getString (KEY_DATABASE );
18671870 String schema = request .getString (KEY_SCHEMA );
18681871 String combine = request .getString (KEY_COMBINE );
1872+ Subquery from = (Subquery ) request .get (KEY_FROM );
18691873 String column = request .getString (KEY_COLUMN );
18701874 String group = request .getString (KEY_GROUP );
18711875 String having = request .getString (KEY_HAVING );
@@ -1879,6 +1883,7 @@ else if (id instanceof String) {
18791883 request .remove (KEY_DATABASE );
18801884 request .remove (KEY_SCHEMA );
18811885 request .remove (KEY_COMBINE );
1886+ request .remove (KEY_FROM );
18821887 request .remove (KEY_COLUMN );
18831888 request .remove (KEY_GROUP );
18841889 request .remove (KEY_HAVING );
@@ -2055,6 +2060,7 @@ else if (whereList != null && whereList.contains(key)) {
20552060 }
20562061 }
20572062
2063+ config .setFrom (from );
20582064 config .setColumn (cs );
20592065 config .setWhere (tableWhere );
20602066
@@ -2079,6 +2085,7 @@ else if (whereList != null && whereList.contains(key)) {
20792085 request .put (KEY_DATABASE , database );
20802086 request .put (KEY_SCHEMA , schema );
20812087 request .put (KEY_COMBINE , combine );
2088+ request .put (KEY_FROM , from );
20822089 request .put (KEY_COLUMN , column );
20832090 request .put (KEY_GROUP , group );
20842091 request .put (KEY_HAVING , having );
0 commit comments