Foros del Web » Programando para Internet » PHP »

Combinar dos consultas

Estas en el tema de Combinar dos consultas en el foro de PHP en Foros del Web. Hola, en la actuadad tengo una búsqueda sencilla para mostrar unos resultados entre fechas $fechainicio1 y $fechafin1 Código PHP: <?php $consulta  =  "SELECT Sum(ventas) AS SumaVentas FROM frm_ventas WHERE ((ventas_fecha) BETWEEN '$fechainicio1' AND '$fechafin1') GROUP BY Familia" ...
  #1 (permalink)  
Antiguo 23/06/2016, 10:04
 
Fecha de Ingreso: enero-2006
Ubicación: Valencia
Mensajes: 96
Antigüedad: 18 años, 3 meses
Puntos: 1
Combinar dos consultas

Hola,
en la actuadad tengo una búsqueda sencilla para mostrar unos resultados entre fechas $fechainicio1 y $fechafin1
Código PHP:
<?php
$consulta 
"SELECT Sum(ventas) AS SumaVentas FROM frm_ventas
WHERE ((ventas_fecha) BETWEEN '$fechainicio1' AND '$fechafin1')
GROUP BY Familia"
;
$result $conn->prepare($consulta);
$result->execute();
$registros $result->fetchAll();

foreach (
$registros as $row) {
    echo 
$row['SumaVentas'];
}
?>
pero ahora tengo que añadir la misma consulta pero entre dos fechas diferentes
$fechainicio1 - $fechafin1 y $fechainicio2 $fechafin2

La primera idea sencilla podría ser algo como esto, pero genera muchas consultas y mucho tiempo de ejecución

Código PHP:
<?php
$consulta 
"SELECT Sum(ventas) AS SumaVentas FROM frm_ventas
WHERE ((ventas_fecha) BETWEEN '$fechainicio1' AND '$fechafin1')
GROUP BY Familia"
;
$result $conn->prepare($consulta);
$result->execute();
$registros $result->fetchAll();

foreach (
$registros as $row) {
    
$consulta "SELECT Sum(ventas) AS SumaVentas2 FROM frm_ventas
    WHERE ((ventas_fecha) BETWEEN '$fechainicio2' AND '$fechafin2')
    AND Familia=:familia"
;
    
$result $conn->prepare($consulta);
    
$result3->execute(array(":familia" => $row['Familia']));
    
$registros $result->fetch();
    
    echo 
$row['SumaVentas'];
    echo 
$row['SumaVentas2'];
}
?>
por lo que lo ideal es, hacer las dos consultas inicialmente y ver como combinarlas en el foreach, que me suena de haber visto algo parecido pero no recuerdo cómo hacerlo

Código PHP:
<?php
$consulta 
"SELECT Sum(ventas) AS SumaVentas FROM frm_ventas
WHERE ((ventas_fecha) BETWEEN '$fechainicio1' AND '$fechafin1')
GROUP BY Familia"
;
$result $conn->prepare($consulta);
$result->execute();
$registros $result->fetchAll();

$consulta2 "SELECT Sum(ventas) AS SumaVentas2 FROM frm_ventas
WHERE ((ventas_fecha) BETWEEN '$fechainicio2' AND '$fechafin2')
GROUP BY Familia"
;
$result2 $conn->prepare($consulta2);
$result2->execute();
$registros2 $result2->fetchAll();

foreach (
$registros as $row) {
    echo 
$row['SumaVentas'];
// como poner aquí los resultados de $registros2 ????
}
?>
Muchas gracias
  #2 (permalink)  
Antiguo 23/06/2016, 13:13
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Pregunta Respuesta: Combinar dos consultas

Puedes meter un foreach dentro de otro sin problema.

Código PHP:

foreach($matriz1 as $item1)
{
    foreach(
$matriz2 as $item2)
    {
    
    }

No se si es esto lo que buscas.

Saludos.
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #3 (permalink)  
Antiguo 24/06/2016, 04:00
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Combinar dos consultas

Y por qué no
Código PHP:
Ver original
  1. foreach ($registros as $row) {
  2.     echo $row['SumaVentas'];
  3. }
  4.  
  5. foreach ($registros2 as $row) {
  6.     echo $row['SumaVentas'];
  7. }

O también
Código PHP:
Ver original
  1. $resultado = array_merge($registros, $registros2);
  2.  
  3. foreach ($resultado as $row) {
  4.     echo $row['SumaVentas'];
  5. }
__________________
Unset($vida['malRollo']);

Etiquetas: combinar, fecha, registro, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:28.