错误号:1066不唯一的表/别名:codeigniter中的'service'

时间:2015-10-10 23:22:36

标签: php mysql codeigniter join inner-join

希望获得一对多关系中的所有服务 我的代码是

$this->db->select('*');
    $this->db->from('service');
    $this->db->join('user', 'user.user_email = service.user_email', 'inner');
    $this->db->join('service', 'service.user_email = user.user_email', 'inner');
    $query = $this->db->get();

但它给了我一个错误

Error Number: 1066

Not unique table/alias: 'service'

SELECT * FROM (`service`) INNER JOIN `user` ON `user`.`user_email` = `service`.`user_email` INNER JOIN `service` ON `service`.`user_email` = `user`.`user_email`

Filename: C:\xampp\htdocs\service\system\database\DB_driver.php

如果我没有

$this->db->from('service');

然后它给出了语法错误

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN `user` ON `user`.`user_email` = `service`.`user_email` INNER JOIN `se' at line 2

SELECT * INNER JOIN `user` ON `user`.`user_email` = `service`.`user_email` INNER JOIN `service` ON `service`.`user_email` = `user`.`user_email`

Filename: C:\xampp\htdocs\service\system\database\DB_driver.php

1 个答案:

答案 0 :(得分:4)

您正尝试将service表加入user表,然后再次尝试加入service表。

这不是您通常应该尝试做的事情,当您这样做时,呈现的SQL语句包含两次尝试引用service表。这是导致数据库痛苦的第二个JOIN,它会引发您所看到的错误。

在这种情况下,只需使用:

$this->db->select('*');
$this->db->from('service');
$this->db->join('user', 'user.user_email = service.user_email', 'inner');
$query = $this->db->get();

以来
$this->db->join('service', 'service.user_email = user.user_email', 'inner');

在这里是多余的(你已经在那个领域加入了这些表。