Codeigniter JOIN - 不是唯一的表/别名问题

时间:2017-09-19 15:47:02

标签: php mysql codeigniter

我有来自多个国家/地区的预订表(例如:book_uk)这些表包含有关不同国家/地区客户的信息,例如姓名,地址等。然后在我的结果表中,我得到了该客户所有测试的结果。如果信息被PIN号“链接”,例如336699,则在book_uk表和结果表中都会引用该号码。

我想要做的是从book_uk表中选择所有数据,然后将每一行链接到结果表(PIN匹配的地方)但我不断得到一个唯一的表/别名,这是我的模型代码:

$database->select($new_country_columns)
     ->from($country_table);
$database->select($p_results_cols)
     ->from($table);
$database->join('p_results', $join, 'inner');

$database早先在模型

中定义

产生此错误:

Error Number: 1066

Not unique table/alias: 'p_results'

SELECT `book_uk`.`pin`, `book_uk`.`clinic`, `book_uk`.`dob`, `book_uk`.`gender`, `book_uk`.`country`, `book_uk`.`order_date`, `p_results`.`pin`, `p_results`.`code`, `p_results`.`name`, `p_results`.`result` FROM (`book_uk`, `p_results`) INNER JOIN `p_results` ON 'book_uk.pin = p_results.pin'

Filename: C:/xampp/htdocs/projects/b2k-stat/system/database/DB_driver.php

Line Number: 691

我真正需要做的是从book_uk中选择数据,然后在结果表上运行foreach循环,并将具有匹配PIN的任何数据添加到结果数组中,我不知道如何执行此操作,我试图循环它有一个foreach循环,但它一直空白,我也尝试过:

$database->select($new_country_columns)
     ->from($country_table)
     ->join('p_results', $join, 'inner');

但这也给我零结果,任何帮助?提前致谢

2 个答案:

答案 0 :(得分:0)

删除

'p_results' 

来自你的

FROM 

条款,因为您在此之后加入。

答案 1 :(得分:0)

不确定这是否是最好的处理方式,但我通过生成2个查询并在两个查询的foreach循环中运行IF语句解决了我的问题,如下所示:

$database->select($new_country_columns)
     ->from($country_table);
$query1 = $database->get()->result_array();
$p_results->select($p_results_cols)
     ->from($table);
$query2 = $p_results->get()->result_array();

foreach($query1 as $row){
    foreach($query2 as $rows) {
        if($row['pin'] === $rows['pin']) {
            $new_row = array_merge($row, $rows);
            $query[] = $new_row;
        }
   }
}
return $query;

这段代码给了我一个需要在我的视图中显示的组合数据