我有一个非常奇怪的问题,一个非常简单的选择语句。这里是:CodeIgniter Oracle选择 - 随机问题
我正在读取一个csv文件(即导出一个Excel文件)。字段分隔符是“;”每个字段都用“”括起来。
我使用第二,第三和第五个字段来创建一个SELECT来查找数据库中的信息。换句话说,我正在根据他们的姓氏和名字以及电子邮件在一张桌子上找人。例如:
SELECT MAX(n_id_persona) AS n_id_persona
FROM (
SELECT DISTINCT MAX(p.n_id_persona) AS n_id_persona
FROM PERSONAS p
WHERE (NO_ACCENTS(p.d_apellidos) LIKE NO_ACCENTS('%Lastname%')
AND NO_ACCENTS(p.d_nombres) LIKE NO_ACCENTS('%Firstname%'))
UNION
SELECT DISTINCT MAX(p.n_id_persona) AS n_id_persona
FROM PERSONAS p
LEFT JOIN CORREOS c ON (p.n_id_persona = c.n_id_persona)
WHERE ((c.c_correo LIKE '%[email protected]%')));
的问题是,随机,笨不会带来任何N_ID_PERSONA但如果我在Oracle SQL Developer中测试相同的查询它检索和ID。
我首先想到这是一个超时,但被丢弃了。此外,重新制定了查询,因为我认为他们不正确,但没有。函数NO_ACCENTS()仅用相应的字母替换所有重音字符,并将所有内容写入大写。我也尝试过不使用这个NO_ACCENTS()函数,并得到相同的奇怪结果。
任何想法?这是否发生在任何人身上?
非常感谢!
V
///////////////////////////////////////// //////////////////////////////////
这是代码:
控制器/ importador.php
public function __construct()
{
parent::__construct();
$this->output->enable_profiler(TRUE);
session_start();
}
public function index()
{
//Connection info to the DB
$_SESSION['c'] = $connection_info;
$this->db = $this->load->database($_SESSION['c'], TRUE, TRUE);
$this->load->model('Importador_model');
//Reads the csv
$this->load->library('csvreader');
$filePath = '/home/vcl/Desktop/CRM/File_name.csv';
$data['csvData'] = $this->csvreader->parse_file($filePath);
foreach($data['csvData'] as $linea){
$data['coincidencia'] = $this->Importador_model->Buscar_contacto(str_replace('\'', '\'\'', $linea['Apellido']), str_replace('\'', '\'\'', $linea['Nombre']), $linea['Email']);
echo $linea['Apellido'].' '.$linea['Nombre'].''.$linea['Entrevista'].'<br>';
$temp = $data['coincidencia']->row();
echo $temp->N_ID_PERSONA;
echo '<br>';
}
}
型号/ importador_model.php
function Buscar_contacto($ape = NULL, $nom = NULL, $email = NULL)
{
$CI =& get_instance();
$query = $CI->db->query('SELECT MAX(n_id_persona) AS n_id_persona
FROM (
SELECT DISTINCT MAX(p.n_id_persona) AS n_id_persona
FROM PERSONAS p
WHERE (NO_ACCENTS(p.d_apellidos) LIKE NO_ACCENTS(\'%'.$ape.'%\')
AND NO_ACCENTS(p.d_nombres) LIKE NO_ACCENTS(\'%'.$nom.'%\'))
UNION
SELECT DISTINCT MAX(p.n_id_persona) AS n_id_persona
FROM PERSONAS p
LEFT JOIN CORREOS c ON (p.n_id_persona = c.n_id_persona)
WHERE ((c.c_correo LIKE \'%'.$email.'%\')))');
return $query;
}
它有助于多一点吗?
当你说“随机”你的意思是_same_参数你有时会得到数据,有时你没有数据?你调用这个SQL的Codeigniter PHP代码是什么样的? – Wolf
例如,这个例子中的1个是20个。它应该检索数据,但它没有。但对于其他情况,相同的查询完美地工作。 – Veronica
我正在编辑其余代码的问题。 – Veronica