Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con consulta

Estas en el tema de Problema con consulta en el foro de PHP en Foros del Web. Buenas! llevo liado toda la noche con este tema y no encuentro una solución. El tema es que tengo en una tabla llamada actuals, que ...
  #1 (permalink)  
Antiguo 09/06/2015, 17:09
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Problema con consulta

Buenas! llevo liado toda la noche con este tema y no encuentro una solución.
El tema es que tengo en una tabla llamada actuals, que contiene los siguientes campos:

subsidiaryID
period
year
coasubID
accname
amount

el tema es que queria hacer una consulta que sacara en una tabla de forma horizontal los valores del campo amount por periodo, para posteriormente compararlos.

La consulta que tengo hecha es la siguiente:

Código PHP:
<?php 
$subsidiaryID
=$_GET["subsidiaryID"];
$periodID=$_POST["periodID"];
$yearID=$_POST["yearID"];
$sql ="select * from actuals JOIN coamap ON actuals.coasubID=coamap.coasubID JOIN coagroup ON coamap.coagroupID=coagroup.coagroupID where actuals.subsidiaryID ='$subsidiaryID' AND actuals.period='$periodID' AND actuals.year='$yearID' GROUP BY coagroup.coagroupID";
$resultado=mysql_query($sql) or die( mysql_error() ); 
while (
$row =mysql_fetch_array($resultado)){
$amount=$row['amount'];
$amountf=money_format('%(#1n'$amount);
echo 
"
<tr>
<td>$amountf</td>
<td>$amountn1</td>
<td>$amountn2</td>
<td>"
.$row['coagroupID']."</td>
<td>"
.$row['accnamegroup']."</td>
<td>$amountf</td>
<td>budget</td>
<td>variacion</td>
</tr>"
;
}
?>
$amountn1 y $amountn2 serian los valores insertados en la BD para el campo amount del periodo n1 y n2.
El problema es que solo imprime correctamente los valores de $amountf, pero no los otros dos, por lo que no puedo generar la tabla correctamente.

Alguna ayuda?

gracias de antemano
  #2 (permalink)  
Antiguo 10/06/2015, 08:29
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con consulta

126 visitas y ninguna idea...?
  #3 (permalink)  
Antiguo 10/06/2015, 08:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con consulta

Bueno, creo que no hace falta decirte lo evidente: ¿en qué parte del código defines las variables que mencionas?

Se ve que las usas, ¿pero dónde las declaras?

Además también se nota que definiste $amount y $amountf sin problemas ¿por qué las otras variables no?

¿De dónde deben salir los valores de $amountn1 y $amountn2 eh?

Cita:
126 visitas y ninguna idea...?
Pues no, que acá no hay adivinos.

¿Ideas para qué?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 10/06/2015, 08:55
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con consulta

jeje, sí, tienes razón debería haberlo explicado mejor, pero si que están definidas evidentemente.
imagina una tabla como la que he puesto arriba:

subsidiaryID (ID de la empresa)
period (mes de 01 a 12)
year (año)
coasubID (id de la cuenta contable)
accname (nombre de la cta contable)
amount (importe)

el problema es que quiero montar una tabla que imprima los diferentes importes de los diferentes períodos para cada tipo de id de cuenta.

Con la consulta de arriba, logro hacerlo para un solo período, pero no para todos (imagina que hay 12 periodos, 12 meses).
  #5 (permalink)  
Antiguo 10/06/2015, 09:07
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Problema con consulta

Veo que usas get para enviar el ID, porque no haces una consulta adicional que te extraiga todo?

ya solo la recorres con while, foreach o hasta un for serviria
  #6 (permalink)  
Antiguo 10/06/2015, 09:15
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con consulta

Cita:
Iniciado por ArturoGallegos Ver Mensaje
Veo que usas get para enviar el ID, porque no haces una consulta adicional que te extraiga todo?

ya solo la recorres con while, foreach o hasta un for serviria
Hola Arturo, gracias por la respuesta. En realidad la regojo el usuario con GET porque está impreso el codigo en la url, no tiene más explicación que esa.

Hay dos consultas adicionales que extraen los 'amounts' del periodo 02 y del 03, el problema es que no logro imprimir la pantalla en orden:

En las filas pone el num de cuenta
En las columnas poner periodos n n+1 n+2
y dentro de la tabla, sus respectivos importes, recogidos en las variables (amount, amountn1 y amountn2) para estas dos ultimas variables, me imprime un valor constante para todas las filas, lo cual no es correcto porque cada fila (num de cuenta contable) tiene su importe en cada período...
  #7 (permalink)  
Antiguo 11/06/2015, 02:19
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con consulta

os indico la tabla que tengo y en una imagen como quiero imprimirlo.
tabla: actuals
subsidiaryID period year coasubID coasubname amount
BBX004 1 2015 705000000 VENTAS 120000
BBX004 1 2015 607000000 GASTOS 65000
BBX004 2 2015 705000000 VENTAS 180000
BBX004 2 2015 607000000 GASTOS 69000
BBX004 3 2015 705000000 VENTAS 88000
BBX004 3 2015 607000000 GASTOS 50000

El encabezado de la columna deben ser los períodos 1 2 y 3
las filas deben ser las cuentas y los importes de cada período.

Gacias por la ayuda, a ver si se entiende mejor ahora.

Última edición por jlusc98; 11/06/2015 a las 02:26
  #8 (permalink)  
Antiguo 11/06/2015, 05:08
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: Problema con consulta

Bueno, después de mucho pensar y más aún buscar, he encontrado la solución. La pongo por si alguien se encuentra en el futuro con el mismo problema.

1.: Primero, hago una consulta seleccionando el coasubID (que es el num de la cuenta). Y lo guardo en un array temportal ($temp)
2.: Segundo, selecciono las variables period, year y amount, de la tabla actuals donde coasubID ='$temp';
3.: El tercer paso, es crear un array que ordene los datos, en este caso $amount:
$amount=array();
foreach ($temp as$n)
´
$n['$amount']=buscar_importes($n['nombre']);
array_push($notas,$n);
}

El array que resulta tendría la siguiente estructura:

Array
(
['coasubID] =>'705000000'
['amount'] =>Array
(
[0]=>Array
(
[period]=>01
[year] =>2015
[amount]=>120000
)
)
)

Luego mostramos el resultado.

// mostrar cuentas
echo $amount['coasubID'];

// mostrar importes
foreach($importes['importes'] as $row)
{
echo $row['period'];
echo $row['year'];
echo $row['amount]
}

Gracias por vuestra ayuda! :)

Etiquetas: mysql, select, sql, tabla
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 04:35.