Skip to content

Commit

Permalink
1.修复Oracle-使用db.Where("val")在单纯做查询时会出现identifier的错误
Browse files Browse the repository at this point in the history
2.修复Oracle-使用db.Order**()模式时会出现identifier的错误
3.修复Oracle-复杂Order查询会出现identifier的错误
4.修复Oracle-Count和Counts方法错误
5.修复Oracle-Paginator以及PaginatorWG方法错误
  • Loading branch information
tobycroft committed Nov 6, 2023
1 parent 3435e18 commit e22f5b5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 17 deletions.
26 changes: 13 additions & 13 deletions builder_oracle.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ func (b *BuilderOracle) BuildQueryOra() (sqlStr string, args []interface{}, err
tableName := b.BuildTable()
sqlStr = fmt.Sprintf("SELECT %s%s FROM %s%s%s%s%s%s%s", b.BuildDistinct(), fieldsStr,
tableName, join, where, b.BuildLimit(), b.BuildGroup(), b.BuildHaving(), b.BuildOrder())
fmt.Println("sqlstr1", sqlStr)
//fmt.Println("sqlstr1", sqlStr)
// 批量取数据需嵌套写法
if b.GetLimit() > 0 {
aliasNameA := "tabA"
Expand All @@ -108,25 +108,25 @@ func (b *BuilderOracle) BuildQueryOra() (sqlStr string, args []interface{}, err
// }
//}

//if fieldsStr == "*" {
// fieldsStr = b.AddFieldQuotesOracle(b.GetTable()) + ".*, rownum r"
//} else {
// if b.GetGroup() == "" {
// fieldsStr = fieldsStr + ", rownum r"
// }
//}

// 没有group by需要1层嵌套, 有group by需要2层嵌套
// 如果考虑orderby优化,还需要一层嵌套。目前未考虑
if b.GetGroup() == "" {
sqlStr = fmt.Sprintf("SELECT %s%s FROM %s%s%s%s%s", b.BuildDistinct(), fieldsStr,
tableName, join, where, b.BuildLimit(), b.BuildOrder())
sqlStr = fmt.Sprintf("SELECT %s%s FROM %s%s%s%s", b.BuildDistinct(), fieldsStr,
tableName, join, where, b.BuildOrder())

//sqlStr = fmt.Sprintf("select * from (%s) %s where %s.r>=%s",
// sqlStr, aliasNameA, aliasNameA, strconv.Itoa(startRow))
fmt.Println("sqlStr2", sqlStr, where, b.BuildLimit())
//fmt.Println("sqlStr2", sqlStr, where)

} else {
if fieldsStr == "*" {
fieldsStr = b.AddFieldQuotesOracle(b.GetTable()) + ".*, rownum r"
} else {
if b.GetGroup() == "" {
fieldsStr = fieldsStr + ", rownum r"
}
}

sqlStr = fmt.Sprintf("SELECT %s%s FROM %s%s%s%s%s%s GROUP BY ROWNUM", b.BuildDistinct(), fieldsStr,
tableName, join, where, b.BuildGroup(), b.BuildHaving(), b.BuildOrder())

Expand All @@ -136,7 +136,7 @@ func (b *BuilderOracle) BuildQueryOra() (sqlStr string, args []interface{}, err
strconv.Itoa(startRow))
}
}

//fmt.Println("final",sqlStr)
//args = b.bindParams
args = b.IOrm.GetBindValues()
return
Expand Down
8 changes: 4 additions & 4 deletions orm_query.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package gorose

import (
//"fmt"
"github.com/gohouse/t"
"math"
"reflect"
"strings"
"sync"
//"fmt"
)

// Select : select one or more rows , relation limit set
Expand Down Expand Up @@ -63,7 +63,7 @@ func (dba *Orm) Count(args ...string) (int64, error) {
if len(args) > 0 {
fields = args[0]
}
count, err := dba._unionBuild("count", fields)
count, err := dba._unionBuild("COUNT", fields)
if count == nil {
return 0, err
}
Expand Down Expand Up @@ -91,15 +91,15 @@ func (dba *Orm) Counts(count_fileds ...string) (int64, error) {
return 0, err
}
dba.order = order
total_number, err := dba.Query(`SELECT count(*) as count from(`+sqls+`) as counts`, args...)
total_number, err := dba.Query(`SELECT COUNT(*) as COUNT from(`+sqls+`) as COUNTS`, args...)
if err != nil {
return 0, err
}
//fmt.Println(dba.LastSql())
if len(total_number) < 1 {
return 0, err
}
return t.New(total_number[0]["count"]).Int64(), err
return t.New(total_number[0]["COUNT"]).Int64(), err
}
}

Expand Down

0 comments on commit e22f5b5

Please sign in to comment.