Не удалось объединить таблицы, чтобы получить желаемый результат

0

У меня следующие 3 таблицы

suppliers
id  job_title
1       S1
2       S2
3       S3
6       S6

supplier_job
id   supplier_id   job_id
1       1            1
2       2            2
3       3            1
4       6            2

job_report
Id    report  supplier_id  job_id
1       R1      1            1
2       R2      1            1
3       R3      1            1
4       R4      3            1
5       R5      3            1
6       R6      6            2

В приведенном ниже коде дается список поставщиков, которые против конкретной работы

$this->db->select('*');
$this->db->where('job_id',$job_id);
$this->db->from('supplier_job');
$this->db->join('suppliers','supplier_job.supplier_id=suppliers.id','Right');
$query=$this->db->get();
$r = $query->result();

Однако, наряду с этим списком, я хочу получить общее количество отчетов, отправленных на одного поставщика против этой работы, поэтому в соответствии с этим результат должен быть таким же

Если job_id = 1, тогда

job_id supplier_id   total_report
1           1           3
1           3           2   

Кто-нибудь может рассказать, как получить желаемый результат

  • 0
    В вопросах с запросами лучшее, что вы можете сделать, - это создать sqlfiddle.com, чтобы попробовать себя, или позволить другим попытаться получить желаемые результаты.
Теги:
codeigniter
join

1 ответ

0

Попробуйте этот mysql-запрос.

SELECT 
    p.job_id,
    p.supplier_id,
    Count( p.report ) AS total_report
FROM 
    job_report p 
WHERE 
    p.job_id = 1
GROUP BY 
    p.job_id,
    p.supplier_id

Выход:

Job_id  supplier_id  total_report
 1         1           3
 1         3           2
  • 0
    Есть ли способ, где вместо записи всех параметров я могу использовать *
  • 0
    Я не знаю другого пути. Вы пробовали этот sql? это работает?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню