Запрос на объединение и подсчет строк в MySQL - PullRequest
0 голосов
/ 01 марта 2019

У меня есть две таблицы портала и таблица входа в систему. Как узнать количество portal_id в таблице входа и объединиться с таблицей портала.Если в таблице входа в систему нет подходящей строки, показывается пустое значение

    $this->db->select("a.name");
    $this->db->from("{$this->Portal} a");
    $this->db->join("{$this->login} b","a.id = b.portal_id");
    $this->db->order_by("a.portal_id asc");

Таблица portal

id  |  name
1   |  john
2   |  steve
3   |  ricky
4   |  richard

Таблица Логин

portal_id | city
1         | Bangalore
2         | Ludhiana 
1         | Chandighara
2         | Delhi

Таблица результатов

id    |  name | count
1     | john  | 2
2     | steve | 2
3     | ricky | null

Ответы [ 4 ]

0 голосов
/ 01 марта 2019

Работает отлично ....

    Select a.id, a.name, NULLIF(count(b.portal_id ), 0) from portal a
    left join Login b on a.id = b.portal_id 
    group by a.id
    order by a.id asc
0 голосов
/ 01 марта 2019
$this->db->select("a.id,a.name,count(a.id)");
$this->db->from("{$this->Portal} a");
$this->db->join("{$this->login} b","a.id = b.portal_id", 'left');
$this->db->group_by("a.id");
$this->db->order_by("a.id asc");

Выполнение запроса типа

Select a.id, a.name, count(a.id) from portal a
left join login b on a.id = b.portal_id
group by a.id
order by a.id asc
0 голосов
/ 01 марта 2019

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

    select p.id,
    p.name,
    NULLIF(count(l.portal_id), 0) as 
    portal_logn_count
    from portal p left join login l on p.id = 
    l.portal_id
    group by p.id,p.name
    order by p.id,p.name



0 голосов
/ 01 марта 2019
SELECT p.id, p.name, COUNT(l.id) AS `count`
FROM portal p
LEFT JOIN Login l ON l.portal_id = p.id
GROUP BY p.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...