Получить счетчик нескольких полей в MySQL - PullRequest
0 голосов
/ 27 июня 2018

enter image description here Я не могу получить 3 поля подсчета из 3 разных таблиц, используя приведенный ниже SQL-запрос. Может кто-нибудь помочь мне, где я ошибаюсь. Первый счет присваивается еще 2 поля. Означает, что если я получу счет 'total_scenarios' как 10, оставшиеся 2 параметра (total_career_sketches, video_count) примут одно и то же значение 10.

$this->db->select('users.id,users.name,users.user_lname,users.email, 
count(fc_scenarios.user_id) as total_scenarios, count(career_sketch.user_id) 
as total_career_sketches, count(video_tracker.user_id) as video_count 
,career_timeline.filled_modules');
$this->db->from('users');
$this->db->join('fc_scenarios','users.id = fc_scenarios.user_id AND 
fc_scenarios.status = "A" AND fc_scenarios.type = "o"','left');
$this->db->join('career_sketch','users.id = career_sketch.user_id AND 
career_sketch.status = "A" AND career_sketch.type = "o"','left');
$this->db->join('video_tracker','users.id = video_tracker.user_id','left');
$this->db->join('career_timeline','users.id = 
career_timeline.user_id','left');
$this->db->where('users.inkwiry_user != ',1);
$this->db->where('users.status','A');
$this->db->group_by('users.id');

Спасибо, Sateesh

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вы можете попробовать следующий запрос, он будет работать

$this->db->select('users.id,users.name,users.user_lname,users.email, 
count(distinct fc_scenarios.id) as total_scenarios, count(distinct career_sketch.id) 
as total_career_sketches, count(distinct video_tracker.id) as video_count 
,career_timeline.filled_modules');
$this->db->from('users');
$this->db->join('fc_scenarios','users.id = fc_scenarios.user_id AND 
fc_scenarios.status = "A" AND fc_scenarios.type = "o"','left');
$this->db->join('career_sketch','users.id = career_sketch.user_id AND 
career_sketch.status = "A" AND career_sketch.type = "o"','left');
$this->db->join('video_tracker','users.id = video_tracker.user_id','left');
$this->db->join('career_timeline','users.id = 
career_timeline.user_id','left');
$this->db->where('users.inkwiry_user != ',1);
$this->db->where('users.status','A');
$this->db->group_by('users.id');
0 голосов
/ 27 июня 2018

Возможно, вам понадобится подсчитать разные значения для ваших объединенных таблиц, я полагаю, из-за отношения один ко многим вы получаете несколько строк, повторяющихся строк из-за объединений, я предлагаю вам использовать разные внутри вашей функции подсчета, например

$this->db->select('users.id,users.name,users.user_lname,users.email, 
count(distinct fc_scenarios.id) as total_scenarios, 
count(distinct career_sketch.id) as total_career_sketches, 
count(distinct video_tracker.id) as video_count,
career_timeline.filled_modules')

Также ваш запрос недопустим, потому что в предложении group by есть только один столбец o строк группы, но в списке выбора вы пытаетесь выбрать и другие столбцы, которые не включены в group by и не сгруппированы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...