MySQL запрос не работает для меня Codeigniter Php - PullRequest
0 голосов
/ 03 марта 2019

Я работаю с MySQL с codeigniter, hHere моя структура таблицы:

Таблица A:

id(doctorid)            name    
-----------------------------
1                       abc
2                       xyz
3                       ahd
4                       djd

Таблица B:

id          doctor_id       type
-------------------------------------
1           1               Nuter
2           3               Spay

Теперь я хочучтобы получить все записи доктора с указанием типа, я хочу получить следующий результат:

id          name        Nuter     Spay
---------------------------------------
1           abc         1         0
2           xyz         0         Spay

Я пытался использовать следующий код, но у меня не работает, как я могу это сделать?

$this->db->select('A.*');
$this->db->from('A');
$this->db->join('B', 'B.doctor_id = (SELECT COUNT(Type) FROM B )');
$query = $this->db->get();

Ответы [ 2 ]

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

Похоже, что вы ищете условное агрегирование.

В чистом SQL запрос должен выглядеть следующим образом:

SELECT
    A.id,
    A.name,
    SUM(CASE WHEN B.type = 'Nuter' THEN 1 ELSE 0 END) as Nuter,
    SUM(CASE WHEN B.type = 'Spay' THEN 1 ELSE 0 END) as Spay
FROM A
INNER JOIN B ON B.doctor_id = A.id
GROUP BY A.id, A.name

Если между таблицами A и 1-1 имеется отношение 1-1B вместо 1-N (как показывают ваши данные выборки), тогда это можно упростить как:

SELECT
    A.id,
    A.name,
    CASE WHEN B.type = 'Nuter' THEN 1 ELSE 0 END as Nuter,
    CASE WHEN B.type = 'Spay' THEN 1 ELSE 0 END as Spay
FROM A
INNER JOIN B ON B.doctor_id = A.id

Попробуйте:

$this->db->select(
    "A.id,
    A.name,
    CASE WHEN B.type = 'Nuter' THEN 1 ELSE 0 END as Nuter,
    CASE WHEN B.type = 'Spay' THEN 1 ELSE 0 END as Spay"
);
$this->db->from('A');
$this->db->join('B', 'B.doctor_id = A.id');
$query = $this->db->get();
0 голосов
/ 03 марта 2019

Попробуйте этот код:

$this->db->select('A.*,B.type');
$this->db->from('A');
$this->db->join('B', 'B.doctor_id = A.id');
$query = $this->db->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...