В чем разница между этими двумя запросами?Почему разные результаты? - PullRequest
0 голосов
/ 21 ноября 2010

Это - дает неверные значения для total_classes

SELECT IFNULL(count(wc.id_wc),0) AS total_classes

FROM `all_tag_relations` AS a
    LEFT JOIN (tags AS t, WebClasses as wc) 
    ON ( a.id_tag = t.id_tag AND a.id_tutor = wc.id_author )
GROUP BY a.id_tutor

Но этот - с подзапросом дает правильные значения -

SELECT (SELECT IFNULL(count(wc.id_wc),0) FROM WebClasses as wc WHERE wc.id_author = a.id_tutor) AS total_classes


FROM `all_tag_relations` AS a
     LEFT JOIN (tags AS t) ON ( a.id_tag = t.id_tag) 
group by a.id_tutor

Решение Решение состоит в том, чтобы объединить другие таблицы с реальной таблицей Tutors с помощью All_Tag_relations, подобной этой

...FROM Tutors as td on join All_Tag_Relations as a on td.id_tutor=a.id_tutor LEFT JOIN ...

1 Ответ

0 голосов
/ 21 ноября 2010

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

Разница между этими запросами состоит главным образом в том, что второй дает вам общее количество веб-классов, а второй - число ob.Веб-классы умножают на число авторов / преподавателей, умноженных на количество тегов, учитывая, что они не пересекаются, и между тегами, веб-классами и all_tag_relations существуют отношения 1: n.

...