【问题标题】:Mysql query not working for me Codeigniter PhpMysql 查询对我不起作用 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();

【问题讨论】:

  • 连接条件好像不对。

标签: php mysql sql codeigniter join


【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2012-07-07
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多