【问题标题】:How to write an SQLite query that uses 4 tables and count()?如何编写使用 4 个表和 count() 的 SQLite 查询?
【发布时间】:2019-03-09 23:56:57
【问题描述】:

我有 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

即使我在数据库中有多个行程,每个行程都有多个游览和泊位,查询返回 1 行,其中包含所有行程的游览总数和泊位总数。

感谢任何帮助。

【问题讨论】:

    标签: sqlite count inner-join


    【解决方案1】:

    您忘记在查询中添加分组:

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

    这样计数器对应(Trip_T.tripID, Trip_T.title, User_T.username)的每个三元组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-18
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      相关资源
      最近更新 更多