如何编写使用4个表和count()的SQLite查询?

时间:2019-03-09 23:56:57

标签: sqlite count inner-join

我有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总数。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您忘记将分组添加到查询中

GROUP BY Trip_T.tripID, Trip_T.title, User_T.username

通过这种方式,计数器对应于(Trip_T.tripID, Trip_T.title, User_T.username)的每个三元组