Как написать запрос SQLite, который использует 4 таблицы и count ()? - PullRequest
0 голосов
/ 10 марта 2019

У меня есть 4 таблицы, из которых мне нужны данные.

Trip_T
  tripID (PK)
  userID (FK)
  ...

User_T
  userID (PK)
  username
  ...

Excursion_T
  excursionID (PK)
  tripID (FK)
  ...

POI_T
  poiID (PK)
  excursionID (FK)
  ...

Я хочу создать таблицу с одной строкой для каждой поездки в БД.В каждой строке должен быть указан идентификатор поездки, название, имя пользователя, связанное с поездкой, количество экскурсий, совершенных в поездке, и количество точек интереса, связанных с этими экскурсиями.

Яиспользуя следующий запрос:

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 строку с тем, что выглядит как общее количество экскурсий и общее количество пуадля всех поездок.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 10 марта 2019

Вы забыли добавить группировку к вашему запросу:

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

Таким образом, счетчики соответствуют каждому триплету (Trip_T.tripID, Trip_T.title, User_T.username)

...