Mysql 查询对我不起作用 Codeigniter Php

Posted

技术标签:

【中文标题】Mysql 查询对我不起作用 Codeigniter Php【英文标题】:Mysql query not working for me Codeigniter Php 【发布时间】:2019-07-24 20:01:19 【问题描述】:

我正在使用带有 codeigniter 的 mysql,h这是我的表结构:

表 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();

【问题讨论】:

连接条件好像不对。 【参考方案1】:

试试这个代码:

$this->db->select('A.*,B.type');
$this->db->from('A');
$this->db->join('B', 'B.doctor_id = A.id');
$query = $this->db->get();

【讨论】:

【参考方案2】:

您似乎正在寻找条件聚合。

在纯 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 和 B 之间存在 1-1 关系而不是 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();

【讨论】:

以上是关于Mysql 查询对我不起作用 Codeigniter Php的主要内容,如果未能解决你的问题,请参考以下文章

为啥在使用 mysql server 5.7.22 时 EXCEPT 对我的查询不起作用? [复制]

c# httpclient 授权标头对我不起作用?

使用 mysql 进行地理位置搜索查询

为啥命名:false 对我不起作用

为啥 Class.forName() 对我不起作用?

为啥 '@drop' 事件在 vue 中对我不起作用?