Как использовать ScalaQuery для построения запроса для count (*) sql? - PullRequest
2 голосов
/ 25 сентября 2010

Когда я программирую с помощью ScalaQuery , как построить оператор "выбрать количество (*) из таблицы"?

Я использовал

Запрос (TestTable.count)

но сгенерированный оператор выбора:

выберите количество (*) из (выберите столбец1 из TestTable t2) t1

Я хочу:

выберите количество (*) из TestTable

извините за мой плохой английский.


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
}

1 Ответ

4 голосов
/ 26 сентября 2010

Я не должен был называть это ошибкой так быстро.Сгенерированный код правильный, но явно не идеальный.Начиная с ScalaQuery 0.9.0, вы можете получить нужный оператор, только вставив оператор CountAll в запрос AST:

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

Я только что внес изменение, чтобы улучшить эту ситуацию, чтобы ненужныево многих случаях этого будет избегать.В ScalaQuery 0.9.1 ваша первоначальная попытка «Запрос (TestTable.count)» должна работать как положено.

...