【问题标题】:Select in sql from 2 tables using CodeIgniter使用 CodeIgniter 从 2 个表中选择 sql
【发布时间】:2014-08-22 06:19:56
【问题描述】:

我的选择有问题,所以我的数据库中有 2 个表:

USER
id       name        is_admin        is_verificator
DOCUMENT
id       date        admin           verificator 

document.admin 是链接用户表的外键

如果我插入了这些行:

1      John           Y            N
2      Patrick        N            Y

和:

1       24/08/2014    1            2

在选择我想为这个文档获取谁是验证者和管理员之后

John   Patrick

public function getOneDosar()
{
    $uid = (int) $this->uri->segment(3, 0);
    $this->load->database();
    $get_dosar = $this->db->query("select
                                    d.date,
                                    u1.name,
                                    u1.name,
                                    from document d
                                    join `users` u1 on(d.fk_user = u1.id and u1.is_admin = 'Y')
                                    join `users` u2 on(d.fk_verificator = u2.id and u2.is_verificator = 'Y')
                                    AND d.id_dosar = $uid");
    if ($get_dosar->num_rows())
    {
        $get_dosar = $get_dosar->result_array();
    }
    else
    {
        $get_dosar = NULL;
    }

    return $get_dosar;
}

请帮帮我

【问题讨论】:

  • 使用活动记录
  • 请提出任何想法
  • 你想加入吗??
  • 我是菜鸟,我无法创建此连接
  • 首先确保第一个表的主键在第二个键中作为外键引用。给出两张表的清晰结构

标签: php mysql codeigniter codeigniter-2


【解决方案1】:

你可以这样构造查询:

$this->db->select( 'd.date,u1.name, u1.name');
    $this->db->from('document d');
    $this->db->join('users u1', "d.fk_user = u1.id and u1.is_admin = 'Y'",your join like inner); 
$this->db->join('users u2 "d.fk_verificator = u2.id and u2.is_verificator = 'Y'",your join like inner);

【讨论】:

  • 我认为解决方法是添加2个外键:1.admin对user.id的引用2.verificator对user.id的引用是个好主意吗?
  • 添加外文将提供更好的表格操作方式,选择更新和其他对您来说会变得容易。
猜你喜欢
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 2017-10-14
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
相关资源
最近更新 更多