0

私のgrailsアプリでは、次のクエリがあります:

def query = """select
                       u.id, u.birth_date, u.gender, uht.data
                    from
                       user_hra_test as uht
                       left join user as u on u.id = uht.user_id
                       left join client as c on c.id = u.client_id
                    where
                       c.id in (${clients*.id.join(',')}) and
                       uht.`date` between "${start.format("yyyy-MM-dd")}" and "${end.format("yyyy-MM-dd")}"
"""

私のデータベースで手動で実行すると、3行が得られます。しかし、私がこれをしているとき:

def queryResult = db.rows(query)

queryResult のサイズは 1 です。どこに問題がありますか?

更新。見つかった行をデータベースから手動で削除しましたが、メソッドは何も返しませんが、phpmyadminでsqlを実行すると2行が返されます

4

3 に答える 3

0

これはおそらくSql/GString相互作用に関係しています。実行するdef query = '''...'''.toString()def query = '''...''' as String、呼び出しの前に実行db.rows(query)すると、問題が解決する可能性が高くなります。詳細についてはこのリンクを、同様の質問についてはこのリンクを参照してください。

于 2012-09-08T01:06:30.293 に答える
0

OK、理由はわかりませんが、クエリが次のようになっている場合に機能します。

select
                       u.id, u.birth_date, u.gender, uht.data
                    from
                       user_hra_test as uht
                       left join user as u on u.id = uht.user_id
                       left join client as c on c.id = u.client_id
                    where
                       c.id in ("""+clients*.id.join(',')+""") and
                       uht.`date` between "${start.format("yyyy-MM-dd")}" and "${end.format("yyyy-MM-dd")}"
于 2012-09-06T18:05:26.133 に答える
0

あなたはこれを試すことができます:

   def dataSource

   def nameMethod() {

       def sql = Sql.newInstance(dataSource)

       def query = def query = """select
                   u.id, u.birth_date, u.gender, uht.data
                from
                   user_hra_test as uht
                   left join user as u on u.id = uht.user_id
                   left join client as c on c.id = u.client_id
                where
                   c.id in (${clients*.id.join(',')}) and
                   uht.`date` between "${start.format("yyyy-MM-dd")}" and   "${end.format("yyyy-MM-dd")}"
               """

       sql.eachRow( query ) { 
           println it //Do whatever you need with each row
       }

    }
于 2012-09-06T17:24:41.050 に答える