基于错误进行排序的SQLite查询

huangapple go评论103阅读模式
英文:

SQLite query for ordering a list based on mistakes made

问题

以下是翻译好的内容:

我想知道如何根据服务员所犯错误的数量查询数据库。

我有两个表格:

员工表

  1. String employeeTable = "CREATE TABLE " + EMP_TABLE + " ("
  2. + ID_EMP + " INTEGER PRIMARY KEY, "
  3. + FIRST_NAME + " TEXT,"
  4. + LAST_NAME + " TEXT,"
  5. + PROFIT + " INTEGER);";

错误员工表

  1. String mistakeTable = "CREATE TABLE " + MISTAKE_TABLE + " ("
  2. + ID_MISTAKE + " INTEGER PRIMARY KEY AUTOINCREMENT,"
  3. + ID_WAITER_MISTAKE + " INTEGER,"
  4. + ID_ORDER_MISTAKE + " INTEGER,"
  5. + MISTAKE_TOTAL + " INTEGER,"
  6. + " FOREIGN KEY (" + ID_WAITER_MISTAKE + ") REFERENCES " + EMP_TABLE + "(" + ID_EMP + "), "
  7. + " FOREIGN KEY (" + ID_ORDER_MISTAKE + ") REFERENCES " + ORDER_TABLE + "(" + ID_ORDER + "));";

我正试图根据在错误表中使用ID_WAITER_MISTAKE统计的员工错误数量对列表进行排序。

  1. String query = SELECT * , COUNT(Mistake_TABLE.ID_Waiter) as Count
  2. FROM EMP_TABLE
  3. ORDER BY Count DESC
英文:

I would like to know how to query a database based on the amount of mistakes made by a waiter.

The two tables I have are

Employee

  1. String employeeTable = "CREATE TABLE " + EMP_TABLE + " ("
  2. + ID_EMP + " INTEGER PRIMARY KEY, "
  3. + FIRST_NAME + " TEXT,"
  4. + LAST_NAME + " TEXT,"
  5. + PROFIT + " INTEGER);";

MistakeEmployee

  1. String mistakeTable = "CREATE TABLE " + MISTAKE_TABLE + " ("
  2. + ID_MISTAKE + " INTEGER PRIMARY KEY AUTOINCREMENT,"
  3. + ID_WAITER_MISTAKE + " INTEGER,"
  4. + ID_ORDER_MISTAKE + " INTEGER,"
  5. + MISTAKE_TOTAL + " INITGER,"
  6. + " FOREIGN KEY (" + ID_WAITER_MISTAKE + ") REFERENCES " + EMP_TABLE + "(" + ID_EMP + "), "
  7. + " FOREIGN KEY (" + ID_ORDER_MISTAKE + ") REFERENCES " + ORDER_TABLE + "(" + ID_ORDER + "));";

I am trying to order the list based on the Employee with the most Mistakes which would be counted in the mistakes table using the ID_WAITER_MISTAKE.

  1. String query = SELECT * , COUNT(Mistake_TABLE.ID_Waiter) as Count
  2. FROM EMP_TABLE
  3. ORDER BY Count DESC

答案1

得分: 1

  1. String query =
  2. "SELECT e." + ID_EMP + ", e." + FIRST_NAME + ", e." + LAST_NAME + ", " +
  3. "COUNT(m." + ID_MISTAKE + ") AS Mistake_Count " +
  4. "FROM " + EMP_TABLE + " AS e LEFT JOIN " + MISTAKE_TABLE + " AS m " +
  5. "ON m." + ID_WAITER_MISTAKE + " = e." + ID_EMP + " " +
  6. "GROUP BY e." + ID_EMP + ", e." + FIRST_NAME + ", e." + LAST_NAME + " " +
  7. "ORDER BY Mistake_Count DESC, e." + ID_EMP ;
英文:

You must join the tables, group by employee and aggregate:

  1. SELECT e.ID_EMP, e.FIRST_NAME, e.LAST_NAME,
  2. COUNT(m.ID_MISTAKE) AS Mistake_Count
  3. FROM employeeTable e LEFT JOIN mistakeTable m
  4. ON m.ID_WAITER_MISTAKE = e.ID_EMP
  5. GROUP BY e.ID_EMP, e.FIRST_NAME, e.LAST_NAME
  6. ORDER BY Mistake_Count DESC, e.ID_EMP

and in Java code you should construct the sql string like this:

  1. String query =
  2. "SELECT e." + ID_EMP + ", e." + FIRST_NAME + ", e." + LAST_NAME + ", " +
  3. "COUNT(m." + ID_MISTAKE + ") AS Mistake_Count " +
  4. "FROM " + EMP_TABLE + "AS e LEFT JOIN " + MISTAKE_TABLE + " AS m " +
  5. "ON m." + m.ID_WAITER_MISTAKE + " = e." + ID_EMP + " " +
  6. "GROUP BY e." + ID_EMP + ", e." + FIRST_NAME + ", e." + LAST_NAME + " " +
  7. "ORDER BY Mistake_Count DESC, e." + ID_EMP ;

I hope there are no typos.

huangapple
  • 本文由 发表于 2020年10月5日 00:05:59
  • 转载请务必保留本文链接:https://go.coder-hub.com/64196910.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定