Foros del Web » Programando para Internet » PHP »

Consulta entre dos condiciones

Estas en el tema de Consulta entre dos condiciones en el foro de PHP en Foros del Web. Hola compañeros, Tengo el siguiente problema. Intento hacer una consulta a la base datos en la que me muestre los litros echados entre dos condiciones ...
  #1 (permalink)  
Antiguo 16/04/2016, 05:53
 
Fecha de Ingreso: noviembre-2011
Ubicación: Ferrol
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Consulta entre dos condiciones

Hola compañeros,
Tengo el siguiente problema. Intento hacer una consulta a la base datos en la que me muestre los litros echados entre dos condiciones que sean entre llenado 'PARCIAL' y llenado 'TOTAL'.
Pero si el ultimo llenado es total que me muestre 0, solo quiero que me muestre los litros si no se lleno el tanque por completo.



<?php

$consulta = mysql_query("SELECT * FROM repostajes WHERE repostajes.deposito='DEPOSITO-8' AND repostajes.deposito between 'PARCIAL' AND 'PARCIAL'");
$total_litros = 0;
while($row = mysql_fetch_array($consulta))
{
$total_litros = $total_litros + $row['litros'];
}
$total_litros;
?>
<?php echo $total_litros?>

Os agradecería vuestra ayuda. Un saludo.
  #2 (permalink)  
Antiguo 16/04/2016, 06:33
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 8 meses
Puntos: 171
Respuesta: Consulta entre dos condiciones

Código SQL:
Ver original
  1. SELECT * FROM repostajes WHERE repostajes.deposito='DEPOSITO-8' AND repostajes.deposito BETWEEN 'PARCIAL' AND 'PARCIAL'

Como se llama el campo donde almacenas PARCIAL??... aqui estas comparando 2 veces lo mismo "deposito"

En palabras simples tienes: selecciona donde deposito es igual a deposito-8 y parcial(hecho mal), cosa que deberia ser(supongo): selecciona donde deposito es igual a deposito-8 y (llenado es igual a parcial o total)
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 16/04/2016, 06:49
 
Fecha de Ingreso: noviembre-2011
Ubicación: Ferrol
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Consulta entre dos condiciones

El campo de llama deposito y el llenado de ese deposito puede ser TOTAL o PARCIAL.
<?php

$consulta = mysql_query("SELECT * FROM repostajes WHERE repostajes.tanque='DEPOSITO-8' AND repostajes.deposito between 'PARCIAL' AND 'PARCIAL'");
$total_litros = 0;
while($row = mysql_fetch_array($consulta))
{
$total_litros = $total_litros + $row['litros'];
}
$total_litros;
?>
<?php echo $total_litros?>

Con esa consulta me da los litros de los llenados del deposito parcial pero me los sigue dando despues de un llenado TOTAL.

Litros del depósito 10.000
1º 300 'PARCIAL'
2º 400 'PARCIAL'
3º 1.000 'PARCIAL'
4º 3.000 'PARCIAL'
5º 300 'PARCIAL'
6º 2.000 'PARCIAL'
7º 1.000 'PARCIAL'
8º 2.000 llenado total la suma da los 10.000 litros y lo marco como depósito 'TOTAL'
9º 300 'PARCIAL'
10º 400 'PARCIAL'
11º 1.000 'PARCIAL'
12º 3.000 'PARCIAL'
Al vaciar el depósito y empezar otro llenado me sigue contando los litros de los llenados PARCIAL anteriores 1º, 2º, 3º, 4º, 5º 6º, 7º. La idea es que después de marcar como TOTAL en el 8º no cuente los anteriores y comience de nuevo

Última edición por desdeferrol; 16/04/2016 a las 08:12
  #4 (permalink)  
Antiguo 16/04/2016, 08:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta entre dos condiciones

BETWEEN esta definido para RANGOS, Es decir MAGNITUDES ESCALARES, no para cadenas de caracteres.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 18/04/2016, 13:18
 
Fecha de Ingreso: noviembre-2011
Ubicación: Ferrol
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Consulta entre dos condiciones

Cita:
Iniciado por gnzsoloyo Ver Mensaje
BETWEEN esta definido para RANGOS, Es decir MAGNITUDES ESCALARES, no para cadenas de caracteres.
Cómo podría realizar la consulta y empezar a contar los litros desde 0 cuando vacíe el depósito.

Gracias.
  #6 (permalink)  
Antiguo 18/04/2016, 13:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Consulta entre dos condiciones

Bueno, por lo pronto, no puedes usar un "SELECT *...", la query debe invocar cada campo devuelto por su nombre, porque se tendrá que hacer uso de variables especiales de MySQL para generar la busqueda del punto de corte.
No es precisamente sencillo.

Por otro lado, hay que asegurarse que tengas los campos con los tipos de dato correcto. De lo contrario las comparaciones pueden fallar. Postea el create table de esa tabla:

Código MySQL:
Ver original
  1. SHOW CREATE TABLE respostajes
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 19/04/2016, 10:50
 
Fecha de Ingreso: noviembre-2011
Ubicación: Ferrol
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Consulta entre dos condiciones

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Bueno, por lo pronto, no puedes usar un "SELECT *...", la query debe invocar cada campo devuelto por su nombre, porque se tendrá que hacer uso de variables especiales de MySQL para generar la busqueda del punto de corte.
No es precisamente sencillo.

Por otro lado, hay que asegurarse que tengas los campos con los tipos de dato correcto. De lo contrario las comparaciones pueden fallar. Postea el create table de esa tabla:

Código MySQL:
Ver original
  1. SHOW CREATE TABLE respostajes
CREATE TABLE IF NOT EXISTS `repostajes` (
`repostaje_id` int(11) NOT NULL AUTO_INCREMENT,
`tanque` varchar(10) COLLATE latin1_spanish_ci NOT NULL,
`fecha` date NOT NULL,
`litros` varchar(10) COLLATE latin1_spanish_ci NOT NULL,
`deposito` varchar(10) COLLATE latin1_spanish_ci NOT NULL,
PRIMARY KEY (`repostaje_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=68 ;


Deposito es la condicion del corte si es PARCIAL O TOTAL con los litros del ultimo repostaje y donde el contador se pone a 0 otra vez.
  #8 (permalink)  
Antiguo 19/04/2016, 10:59
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 9 meses
Puntos: 53
Respuesta: Consulta entre dos condiciones

Cita:
Iniciado por desdeferrol Ver Mensaje
ros y lo marco como depósito 'TOTAL'
Al vaciar el depósito y empezar otro llenado me sigue contando los litros de los llenados PARCIAL anteriores 1º, 2º, 3º, 4º, 5º 6º, 7º. La idea es que después de marcar como TOTAL en el 8º no cuente los anteriores y comience de nuevo
cuando marcas como total el 8 , reinicia tu variable a cero;
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”

Etiquetas: 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:10.