Я застрял в этой ситуации и не знаю, как написать запрос выбора, который приводит к тому, что я хочу. здесь ситуацияSQL - как присоединиться к 3 таблицам и выбрать количество столбцов
У меня есть 3 таблицы сессии, запрос, журнал
сессия таблицы
# session table to store sessions data
ID user
------------
1 John
2 Sarah
запрос таблицы
# request table to store `http` requests come to me
ID session
------------
1 1
2 1
3 1
4 1
5 2
6 NULL
таблицы журнала
# log table to store the logs that I record in my php code and store_
# them in the database while processing the requests
ID request
------------
1 1
2 1
3 2
То, что я хочу, чтобы выбрать каждую сессию и количество запросов, сделанных в этой сессии, а также его количество журналов. Я хочу, чтобы результат
#sessions result
+----+-------+----------+------+
| ID | USER | requests | logs |
+----+-------+----------+------+
| 1 | John | 4 | 3 |
+----+-------+----------+------+
| 2 | Sarah | 1 | NULL |
+----+-------+----------+------+
Что я это я использую соединения и группы по сессии Как
select session.*,count(request.id) as requests,count(log.id) as logs
from session left join request on session.id=request.session
left join log on request.id=log.request group by session.id
проблема, когда я делаю это, если один запрос имеет более чем 1 log, он будет дублироваться соединением как запрос 1 в нашей ситуации, который имеет журналы 1 и 2
# wrong result !! not what I want. notice the count of requests in session 1
+----+-------+----------+------+
| ID | USER | requests | logs |
+----+-------+----------+------+
| 1 | John | ((5)) | 3 |
+----+-------+----------+------+
| 2 | Sarah | 1 | NULL |
+----+-------+----------+------+
Что я здесь делаю неправильно?
благодаря
что я могу сказать? DISTINCTTTTTTTTTT спасибо вам большое –