Foros del Web » Programando para Internet » PHP »

Comparar 2 consultas

Estas en el tema de Comparar 2 consultas en el foro de PHP en Foros del Web. Muy buenas! bueno estoy empezando en php y me encuentro con un problemilla, resulta que tengo 2 consultas que me traen 3 campos fecha,cantidad e ...
  #1 (permalink)  
Antiguo 26/03/2012, 11:36
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Comparar 2 consultas

Muy buenas!
bueno estoy empezando en php y me encuentro con un problemilla, resulta que tengo 2 consultas que me traen 3 campos fecha,cantidad e importe, lo que tengo que hacer es mostrar los resultados ordenados en una tabla, los resultados tengo que mostrarlos de la sgte. manera:

NORMALES | DIFERIDOS
Fecha | Cantidad | Importe | Cantidad | Importe
2012-01-01 2 50 20 50
2012-01-02 5 70 40 30
2012-01-03 1 30 10 20
2012-01-04 4 20 0 0
2012-01-05 7 40 20 10

el problema esta en que si hay alguna fecha que no tenga cantidad ni importe tengo que mostrar un "0" y normalmente en DIFERIDOS hay fechas que no tienen resultados, espero haberme explicado bien. Desde ya gracias por la ayuda!
  #2 (permalink)  
Antiguo 26/03/2012, 12:08
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Comparar 2 consultas

Queres mostrar igual la fecha o que no este indexada en la base de datos? o la fecha esta indexeada pero sin los otros 2 campos ? de ser la segunda podes hacer que cuando no se escribe nada se guarde directamente el 0

Saludos
  #3 (permalink)  
Antiguo 26/03/2012, 12:18
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Comparar 2 consultas

Gracias por tu pronta respuesta!!
mira lo que pasa es que las fechas las tengo que tener en cuenta de los NORMALES y asi mostrar los demas campos con relacion a la fecha que me trae esa consulta, por ejemplo me como resultado 29 registros y solo 28 registros en DIFERIDOS, tengo que ir comparando las fechas para saber en que fecha debo poner en DIFERIDOS 0.. espero haberme explicado. GRACIAS!
  #4 (permalink)  
Antiguo 26/03/2012, 12:22
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Comparar 2 consultas

No entedi muy bien, si podes poner la estructura de la base de datos que tenes, lo que queres hacer (Mejor explicado) y alguna parte del código que tenes para entenderte mejor seria buenísimo

Saludos
  #5 (permalink)  
Antiguo 26/03/2012, 12:30
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Comparar 2 consultas

me explico mejor:
$consulta1 = fecha,cantidad,importe
$consulta2 = fecha,cantidad,importe

mostrar:

Normales:
fecha - cantidad - importe

diferidos:
cantidad - importe

los dos tienen que ir en una sola fila que quedaria asi:
fecha - cant. - imp. -- cant. imp.

la fecha a mostrar tiene que ser sola de $consulta1, imprimir todas las fechas de esta consulta y mostrar la cantidad e importe de $consulta2, pero en la misma fila de cada fecha, y cuando no coincide la fecha de $consulta2 con la de $consulta1 entonces poner 0 (cero) en cant. e imp. de $consulta2.

espero me ayuden, gracias!
  #6 (permalink)  
Antiguo 26/03/2012, 12:39
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Comparar 2 consultas

Ya entendi, podes hacer lo siguiente

SELECT * FROM a,b WHERE a.fecha = b.fecha

y después todo con normalidad

PD: Vas a tener que cambiar los nombres de las columnas en la base de datos EJEMPLO: fechaNORMAL, cantidadNORMAL, importeNORMAL y en la otra fechaDIFERIDOS, cantdadDIFERIDOS, importeDIFERIDOS

Para que no se autoexpongan las variables
  #7 (permalink)  
Antiguo 26/03/2012, 12:46
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Comparar 2 consultas

Gracias por tu respuesta marcofbb!! voy a probar a ver si consigo hacerlo asi.
  #8 (permalink)  
Antiguo 26/03/2012, 12:58
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Comparar 2 consultas

bueno ver si estoy mal con mi sql
Código PHP:
$m_cons "SELECT CAST((if(dayofweek(fec_ven)=1,fec_ven+1,if(dayofweek(fec_ven)=7,fec_ven+2,fec_ven))) as DATE) as fecha_real, fec_ven,saldo, week(fec_ven) as semana, if(weekday(fec_ven)=5,day(fec_ven)+2,if(weekday(fec_ven)=6,day(fec_ven)+1,day(fec_ven))) as dia,SUM(1) as can,SUM(saldo) as sal,fec_otro from dbcclied where fec_ven between '$f_date1' and '$f_date2' and cabecera=0 and saldo>0 group by dia order by dia";
$m_const mysql_query($m_cons$conexion) or die(mysql_error());

$m_cons2 "SELECT CAST((if(dayofweek(fec_otro)=1,fec_otro+1,if(dayofweek(fec_otro)=7,fec_otro+2,fec_otro))) as DATE) as fecha_real, fec_otro,saldo, week(fec_otro) as semana,       if(weekday(fec_otro)=5,day(fec_otro)+2,if(weekday(fec_otro)=6,day(fec_otro)+1,day(fec_otro))) as dia,SUM(1) as can,SUM(saldo) as sal,fec_otro from dbcclied where fec_otro between '$f_date1' and '$f_date2' and cabecera=0 and saldo>0 and fec_ven not between '$f_date1' and '$f_date2' group by dia order by dia "
$m_const2 mysql_query($m_cons2$conexion) or die(mysql_error()); 
como veran la consulta es a la misma tabla pero con diferentes parametros, me gustaria saber si hay alguna manera de unir estas dos consultas, cosa que no he podido hacerlo, la manera en que recorro e imprimo los resultados es esta:
Código PHP:
while ($pag2 = mysql_fetch_array($m_const) and $pag3 = mysql_fetch_array($m_const2)){
?>
     <tr>
        <td class="left" style="font-size:13px">        
        <?php
            $fch
=explode("-"$pag2["fecha_real"]);
            
$fecha1=$fch[2]."/".$fch[1]."/".$fch[0];
             echo 
$fecha1;?>
        </td>
        <td align="right" class="right" style="font:normal 13px verdana, arial, helvetica, sans-serif">
        <?php

        
echo number_format($pag2["can"]); 

        
?>
        <td align="right" class="right" style="font:normal 13px verdana, arial, helvetica, sans-serif">
        <?php
            
echo number_format($pag2["sal"]); 
        
?>
        </td>                
        <td align="right" class="right" style="font:normal 13px verdana, arial, helvetica, sans-serif">
        <?php
        
if ($pag2['fecha_real'] == $pag3['fecha_real'] ){
            echo 
$pag3["can"]; 
        }else{
            echo 
'0'
            
        }
?>
        <td align="right" class="right" style="font:normal 13px verdana, arial, helvetica, sans-serif">
        <?php
        
if ($pag2['fecha_real'] == $pag3['fecha_real'] ){
            echo 
number_format($pag3["sal"]); 
        }else{
            echo 
'0'
        }
?>
        </td>
       </tr>
    </table>
..bueno estoy seguro que eso se puede mejorar, al imprimir los resultados de esta manera al recorrer, cuando encuentra que en la segunda consulta no tiene una fecha igual al de la primera consulta, me pone el cero, pero al seguir recorriendo ya me pone cero los demas campos de la segunda consulta, hasta ahora no se como resolverlo

Etiquetas: consultas+mysql
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 14:22.