Mysql 具有多个条件的Codeigniter连接
我正在使用Codeigniter Active Records类,我想将我的Mysql 具有多个条件的Codeigniter连接,mysql,codeigniter,join,Mysql,Codeigniter,Join,我正在使用Codeigniter Active Records类,我想将我的用户表与我的客户表连接起来,这样我就可以显示用户的“真实”姓名,而不仅仅是他们的ID 以下是客户机表的外观(示例),列a_1、a_2和a_3对应于我的用户表,具体地说是用户id: clients |--------|---------|----------|-----------|----------| | id | name | a_1 | a_2 | a_3 | |-
用户
表与我的客户
表连接起来,这样我就可以显示用户的“真实”姓名,而不仅仅是他们的ID
以下是客户机
表的外观(示例),列a_1、a_2和a_3对应于我的用户
表,具体地说是用户id
:
clients
|--------|---------|----------|-----------|----------|
| id | name | a_1 | a_2 | a_3 |
|--------|---------|----------|-----------|----------|
| 1 | Paul | 2 | 4 | 1 |
我的users
表如下所示:
users
|--------|---------|----------|
| id | first | last |
|--------|---------|----------|
| 1 | Paul | Blake |
|--------|---------|----------|
| 2 | Dan | Doe |
|--------|---------|----------|
| 3 | Steve | Smith |
|--------|---------|----------|
| 4 | Harry | Jones |
|--------|---------|----------|
因此,从本质上说,如果我从clients
表中选择并加入它,它将如下所示:
clients
|--------|---------|----------|-----------|----------|
| id | name | a_1 | a_2 | a_3 |
|--------|---------|----------|-----------|----------|
| 1 | Paul | Dane Doe |Harry Jones|Paul Blake|
到目前为止,我已经尝试过了(没有成功,它只是为所有人显示了相同的名称):
@Dodinas:我从MYSQL查询中得到了解决方案。我发现很难将查询转换为CI活动记录。但是试试这个:
$sql = "SELECT `name`, CONCAT(`u1`.`first`,' ', `u1`.`last`) as a_1,
CONCAT(`u2`.`first`,' ', `u2`.`last`) as a_2,
CONCAT(`u3`.`first`,' ', `u3`.`last`) as a_3
FROM `clients`
LEFT JOIN `users` as `u1` ON (`u1`.`id`=`a_1`)
LEFT JOIN `users` as `u2` ON (`u2`.`id`=`a_2`)
LEFT JOIN `users` as `u3` ON (`u3`.`id`=`a_3`)";
$result = $this->db->query($sql);
$sql=“选择`name`、CONCAT(`u1`.`first`、'''.`u1`.`last`)作为一个_1,
CONCAT('u2`.'first`,''u2`.'last`)作为,
CONCAT('u3`.'first`,''u3`.'last`)作为
来自“客户”
在(`u1`.`id`=`a_1`)上将`users`作为`u1`左键联接
在(`u2`.`id`=`a_2`)上将`users`作为`u2`左键连接
在(`u3`.`id`=`a_3`)上将`users`作为`u3`左键连接;
$result=$this->db->query($sql);
试试这个
$this->db
->select('*')
->from('clients')
->join('users', 'users.id = clients.a_1 OR users.id=clients.a_2 OR users.id = clients.a_3');
$query = $this->db->get();
return $query->result();
在我的国家,时间几乎是凌晨3点,我已经感到非常困倦。Dats未将查询转换为活动记录的另一个蹩脚原因…:谢谢你!这有帮助。我使用活动记录使其工作,请参见上面的编辑。
$sql = "SELECT `name`, CONCAT(`u1`.`first`,' ', `u1`.`last`) as a_1,
CONCAT(`u2`.`first`,' ', `u2`.`last`) as a_2,
CONCAT(`u3`.`first`,' ', `u3`.`last`) as a_3
FROM `clients`
LEFT JOIN `users` as `u1` ON (`u1`.`id`=`a_1`)
LEFT JOIN `users` as `u2` ON (`u2`.`id`=`a_2`)
LEFT JOIN `users` as `u3` ON (`u3`.`id`=`a_3`)";
$result = $this->db->query($sql);
$this->db
->select('*')
->from('clients')
->join('users', 'users.id = clients.a_1 OR users.id=clients.a_2 OR users.id = clients.a_3');
$query = $this->db->get();
return $query->result();