sqlite - 如何编写使用 4 个表和 count() 的 SQLite 查询?
问题描述
我有 4 个要从中获取数据的表。
Trip_T
tripID (PK)
userID (FK)
...
User_T
userID (PK)
username
...
Excursion_T
excursionID (PK)
tripID (FK)
...
POI_T
poiID (PK)
excursionID (FK)
...
我想为数据库中的每次行程创建一个包含一行的表。每行应包括tripID、标题、与旅行相关的用户名、旅行中的远足次数以及与这些远足相关的poi(兴趣点)数量。
我正在使用以下查询:
SELECT Trip_T.tripID, Trip_T.title, User_T.username
COUNT(DISTINCT Excursion_T.excursionID) AS numExcursions,
COUNT(DISTINCT POI_T.poiID) AS numPOI
FROM Trip_T
INNER JOIN User_T ON User_T.userID = Trip_T.userID
INNER JOIN Excursion_T ON Excursion_T.tripID = Trip_T.tripID
INNER JOIN POI_T ON POI_T.excursionID = Excursion_T.excursionID
即使我在数据库中有多个行程,每个行程都有多个短途旅行和 pois,查询返回 1 行,其中包含所有行程的短途旅行总数和 pois 总数。
任何帮助表示赞赏。
解决方案
您忘记在查询中添加分组:
GROUP BY Trip_T.tripID, Trip_T.title, User_T.username
这样,计数器对应于每个三元组(Trip_T.tripID, Trip_T.title, User_T.username)
推荐阅读
- php - 在 php 类构造函数中将数组元素添加到 $this
- jestjs - 如何等待测试库中没有发生的事情?
- django - 防止 Django LDAP 插件在数据库中创建用户
- python - python中的numpy.str_错误预处理文本
- plot - 如何在 Julia 中叠加两个图
- javascript - 在 JavaScript 中对字符串数组进行排序
- quantmod - get.symbols 正在返回“缺少参数 conn,没有默认值”?
- json - ReactJS 从 Grails 获取 JSON
- python-3.x - 错误:访问 python 的路径不存在 - 使用 virtualenvwrapper for Windows 创建新的虚拟环境不起作用
- javascript - Nightwatch.js - 元素存在但不可见