SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 29.08.2014 11:01:00

kalahooo
Участник
Зарегистрирован: 29.08.2014
Сообщений: 4

join из 3 таблиц

Всем привет,
помогите решить такую задачу:
нужно одним запросом соединить 3 таблицы: i_tracks (id,title), i_tracks_comments (track_id,rating), i_lessons (track_id,title)
Причем из 2й таблицы мне надо получить количество средний рейтинг (rating), а из 3й количество уроков

Я сделал так:


SELECT i_tracks.title,
    SUM(i_tracks_comments.rating)/COUNT(i_tracks_comments.rating) as rating,
    COUNT(i_lessons.id) as lessons
FROM i_tracks
left join i_tracks_comments on i_tracks.id = i_tracks_comments.track_id
left join i_lessons on i_tracks.id = i_lessons.track_id
group by i_tracks.id
 


В результате получается, что если к уроку есть, допустим, 3 отзыва, то количество выводимых уроков умножается на 3.

Неактивен

 

#2 29.08.2014 11:21:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: join из 3 таблиц

Логично, уберите группировку, чтобы наглядно увидеть почему так получается.

Вам нужно перенести подсчет уроков во from-подзапрос.

left join (select COUNT(i_lessons.id) ..) on ..

Или попробовать вести подсчет уникальных i_lessons.id, т.е.
     COUNT(distinct i_lessons.id) as lessons

Неактивен

 

#3 29.08.2014 11:28:57

kalahooo
Участник
Зарегистрирован: 29.08.2014
Сообщений: 4

Re: join из 3 таблиц

Спасибо!
первый вариант не попробовал, но вот второй отлично работает!

Неактивен

 

#4 29.08.2014 11:42:47

kalahooo
Участник
Зарегистрирован: 29.08.2014
Сообщений: 4

Re: join из 3 таблиц

первый варинат даже лучше, спасибо еще раз.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson