oracle — запрос возвращает разные результаты между TOAD и переполнением стека

Я использую PHP для веб-приложений, Oracle для базы данных и тестирую запросы с помощью TOAD.

Когда я выполнил первый запрос, я получил 90 строк результатов в обоих (PHP и toad):

select cliente, nombre, cadena,sum(valor) valor, sum(docs) docs,
ROUND(sum(vprom),2) vprom FROM DBO.LAC_PEDIDO_TIENDA_DIA WHERE
(trunc(fecha)=trunc(TO_DATE('2016-11-14','YYYY-MM-DD'))  ) GROUP BY
cliente, nombre, cadena

Когда я запустил второй, я получил 91 от жабы и 146 от PHP:

select cliente, nombre, cadena,sum(valor) valor, sum(docs) docs,
ROUND(sum(vprom),2) vprom FROM DBO.LAC_PEDIDO_TIENDA_DIA WHERE
(trunc(fecha)=trunc(TO_DATE('2016-11-14','YYYY-MM-DD')) OR DLUN>7 )
GROUP BY cliente, nombre, cadena

Отличается «DLUN> 7«

Я создал класс для подключения:

<?php
include 'credenciales.php';

class PHPRequest
{
public $c1;

function __construct($ruta,$usuario,$password)
{
try {
$this->c1 = new PDO($ruta,$usuario,$password);
$this->c1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch (Exception $e) {
echo json_encode(array('exito'=>'0', 'mensaje'=>'error de conexion'));
}//catch
}

public function cantidadFilas($query)
{
$cantidad = $this->c1->query($query);
return $cantidad->fetchColumn();
}

function query($query)
{
try {
$encode = array();
$cantidad = $this->cantidadFilas($query);
$resultado = $this->c1->query($query,PDO::FETCH_ASSOC);
$contador=0;
if($cantidad!='0' && $cantidad!='-1'){
while($valor=$resultado->fetch()) {

$contador++;

//var_dump($resultado->fetch());

$encode[]=$this->utf8ize($valor);
}//while
echo $contador;
}
if (sizeof($encode)==0) {
$encode = array("exito"=>0,'mensaje'=>'no encontraron registros');
}
$enconde = $this->utf8ize($encode);
return json_encode($encode,JSON_PRETTY_PRINT);
} catch (Exception $e) {
$encode = array("exito"=>0,'mensaje'=>'error:'.$e->getMessage());
return json_encode($encode);
}

}
function utf8ize($d) {
if (is_array($d)) {
foreach ($d as $k => $v) {
$d[$k] = $this->utf8ize($v);
}
} else if (is_string ($d)) {
return utf8_encode($d);
}
return $d;
}
}$proceso = new PHPRequest($ruta,$usuario,$password);

$proceso->query("select cliente, nombre, cadena,sum(valor) valor, sum(docs) docs, ROUND(sum(vprom),2) vprom FROM DBO.LAC_PEDIDO_TIENDA_DIA WHERE (trunc(fecha)=trunc(TO_DATE('2016-11-14','YYYY-MM-DD')) OR DLUN>7 ) GROUP BY cliente, nombre, cadena");
?>

Вот код представления таблицы базы данных:

CREATE OR REPLACE FORCE VIEW DBO.LAC_PEDIDO_TIENDA_DIA
(
CLIENTE, NOMBRE, CADENA, FECHA, VALOR, DOCS, DDOM, DLUN, DMAR, DMIE, DJUE, DVIE, DSAB, VPROM
)
AS
SELECT cliente, nombre, cadena, fecha, valor, docs, 0 dDOM, 0 dLUN, 0 dMAR, 0 dMIE, 0 dJUE, 0 dVIE, 0 dSAB, 0 VPROM
FROM dbo.lac_pedidos_dia
UNION ALL
SELECT cliente, nombre, cadena, TO_DATE ('', 'DD/MM/YYYY') fecha, 0 VALOR, 0 DOCS, dDOM, dLUN, dMAR, dMIE, dJUE, dVIE, dSAB, VPROM FROM dbo.lac_dia_tienda;

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]