2010-09-25 55 views
2

當我使用ScalaQuery進行編程時,如何從表格中建立「select count(*)」語句?如何使用ScalaQuery構建count(*)sql的查詢?

我用

查詢(TestTable.count)

但是生成的select語句是:

選擇從COUNT(*)(選擇TestTable的COLUMN1 t2)t1

我想:從TestTable的

對不起

SELECT COUNT(*)我的英文不好。


import org.scalaquery.ql.extended.MySQLDriver.Implicit._ 
import org.scalaquery.session._ 
import org.scalaquery.session.Database.threadLocalSession 
import org.scalaquery.ql.Query 
import org.scalaquery.ql.basic.{BasicTable => Table} 

object Test { 
    val db = Database.forURL(...) 
    db withSession { 
    val q = Query(TestTable.count) 
    println(q.selectStatement) 
    } 
} 
object TestTable extends Table[(Long, Int)]("test") { 
    def id = column[Long]("id") 
    def config = column[Int]("config") 
    def * = id ~ config 
} 
+0

你能發表其餘的代碼嗎? – Jus12 2010-09-25 15:29:34

+0

Stefan說它看起來像一個bug。 – 2010-09-25 21:38:16

+0

已更新添加剩餘代碼 – 2010-09-26 01:08:47

回答

4

我不應該這麼快就稱它爲一個錯誤。生成的代碼是正確的,但顯然不理想。作爲ScalaQuery 0.9.0的,你只能通過手動插入CountAll運營商到查詢AST獲得所需的聲明:

TestTable.map(t => ColumnOps.CountAll(t)) 

我剛剛提交的修改,以改善這種狀況,使不必要的子查詢將在許多情況下可以避免。在ScalaQuery 0.9.1中,您最初的嘗試「Query(TestTable.count)」應該按預期工作。

+0

感謝您的回答和您的項目,szeiger。隨着你的回答,我還獲得瞭如何使用ColumnOps對象,再次感謝。 – 2010-09-26 15:08:05