Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con Query

Estas en el tema de Problema con Query en el foro de Mysql en Foros del Web. Saludos Tengo un gran problema con un query a una DDBB lo que deseo es lo siguiente yo tengo mi variable $pesok, la cual tiene ...
  #1 (permalink)  
Antiguo 20/10/2006, 10:18
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 2 meses
Puntos: 0
Exclamación Problema con Query

Saludos

Tengo un gran problema con un query a una DDBB

lo que deseo es lo siguiente

yo tengo mi variable $pesok, la cual tiene un valor X

mi tabla es la siguiente

id id_provadu peso_inicial peso_final preciocom preciomediog precio_variacion
1 0,5 4,5 8061,70 9429,9
2 5 9,5 164930,80 8061,70 9425
3 10 20 257380,80 8061,70 9060,10
4 20 50 438582,80 8061,70 7211,10
5 50 1000 871248,80 8061,70 6286,60

Lo que deseo en el query es que se seleccione el registro donde se encuentre la variable $pesok que tiene un valor X

por ejemplo:

Si el valor de la variable es: 23 deberia seleccionarse el ID 4 ya que 23 se encuentra entre 20 y 50

Como podría hacerla? estoy algo enredado

Gracias a quienes me puedan ayudar.
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #2 (permalink)  
Antiguo 20/10/2006, 10:30
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Probaría con esto:
Código:
SELECT * 
FROM tutabla
WHERE elcampo
BETWEEN valor1
AND valor2
  #3 (permalink)  
Antiguo 20/10/2006, 10:43
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 2 meses
Puntos: 0
Quedaria asi?

Código PHP:
$resprecios mysql_query("select * from tprecios where $pesok between peso_incial and peso_final  ") or die ("error:\n".mysql_error()); 
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #4 (permalink)  
Antiguo 20/10/2006, 11:27
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
No, perdoná, miré mal la estructura de tu tabla, pensé que el valor debía encontrarse dentro del rango para un sólo campo
  #5 (permalink)  
Antiguo 20/10/2006, 12:01
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 2 meses
Puntos: 0
:( como seria Panino?
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #6 (permalink)  
Antiguo 20/10/2006, 13:47
Avatar de carlosfocus  
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 2 meses
Puntos: 0
He intentado de mil maneras y nada
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com
  #7 (permalink)  
Antiguo 23/10/2006, 15:53
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 4 meses
Puntos: 4
Y si tu consulta la haces de esta forma:

Código PHP:
$consulta "SELECT id FROM trprecios WHERE peso_inicial >= ".$pesok." AND peso_final <= ".$pesok;
$result mysql_query $consulta );
$fila mysql_fetch_array$result );
echo 
'La variable $pesok esta en el rango que se marca en el id: '$fila['id']; 
Obviamente que previo a esto deberás tener los datos de la conexion y la seleccion de la bd. Ahora, en cuanto a la estructura de tu tabla:

1 0,5 4,5 8061,70 9429,9
2 5 9,5 164930,80 8061,70 9425
3 10 20 257380,80 8061,70 9060,10
4 20 50 438582,80 8061,70 7211,10
5 50 1000 871248,80 8061,70 6286,60

No estas marcando bien los rangos ya que los vuelves a repetir (marcados con rojo). Me parece que debería de ser algo así:

1 0,4 4,5 8061,70 9429,9
2 5 9,5 164930,80 8061,70 9425
3 10 19 257380,80 8061,70 9060,10
4 20 49 438582,80 8061,70 7211,10
5 50 1000 871248,80 8061,70 6286,60

o algo por el estilo, ¿no cres?. Bueno pues espero que te sirva de algo. Suerte
  #8 (permalink)  
Antiguo 24/10/2006, 07:20
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
No, el problema está en cómo está definiendo el rango. Tú también lo estás definiendo mal, Erikfrancisco.
La consulta debería ser de esta manera para que funcione:
SELECT *
FROM `tprecios`
WHERE `peso_inicial` <=23
AND `peso_final` >=23
LIMIT 0 , 30

Te dejo la estructura que armé para tu tabla:
-- phpMyAdmin SQL Dump
-- version 2.7.0-pl2
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 24-10-2006 a las 11:18:00
-- Versión del servidor: 5.0.18
-- Versión de PHP: 5.1.2
--
-- Base de datos: `focus`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `tprecios`
--

CREATE TABLE `tprecios` (
`id_precios` int(11) NOT NULL auto_increment,
`id_provadu` decimal(9,2) default NULL,
`peso_inicial` decimal(9,2) default NULL,
`peso_final` decimal(9,2) default NULL,
`preciocom` decimal(9,2) default NULL,
`preciomediog` decimal(9,2) default NULL,
`precio_variacion` decimal(9,2) default NULL,
PRIMARY KEY (`id_precios`)
) ;

--
-- Volcar la base de datos para la tabla `tprecios`
--

INSERT INTO `tprecios` VALUES (1, '0.00', '0.50', '4.50', '0.00', '8061.70', '9429.90');
INSERT INTO `tprecios` VALUES (2, '0.00', '5.00', '9.50', '16000.00', '8000.00', '9000.00');
INSERT INTO `tprecios` VALUES (3, NULL, NULL, NULL, NULL, NULL, NULL);
INSERT INTO `tprecios` VALUES (4, NULL, '20.00', '50.00', '1500.00', '2500.00', NULL);

Última edición por Panino5001; 24/10/2006 a las 07:26
  #9 (permalink)  
Antiguo 24/10/2006, 07:53
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 4 meses
Puntos: 4
Cita:
Iniciado por Panino5001 Ver Mensaje
No, el problema está en cómo está definiendo el rango. Tú también lo estás definiendo mal, Erikfrancisco.
La consulta debería ser de esta manera para que funcione:
SELECT * FROM `tprecios` WHERE `peso_inicial` <=23 AND `peso_final` >=23 LIMIT 0 , 30
No, me parece que el que esta definiendo mal la consulta eres tu Panino5001, porque fijate bien lo que dice carlosfocus:
Cita:
Iniciado por carlosfocus Ver Mensaje
Lo que deseo en el query es que se seleccione el registro donde se encuentre la variable $pesok que tiene un valor X
por ejemplo:
Si el valor de la variable es: 23 deberia seleccionarse el ID 4 ya que 23 se encuentra entre 20(peso_inicial) y 50(peso_final)
Y con la definición de la consulta que tú estas poniendo no se solucionaría ya que donde pones:

`peso_inicial` <=23

Lo que quieres decir con esta operación es que son validos los números menores o iguales a 23 (...20,21,22,23) y en:

`peso_final` >=23

Lo que quieres decir con esta operación es que son validos los números mayores o iguales a 23 (23,24,25,26...). Cuando lo que se pretende es lo contrario, es decir, los números que se encuentren en el rango de de peso_inicial >= 23 y peso_final <= 23. Suerte
  #10 (permalink)  
Antiguo 24/10/2006, 08:05
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Estás equivocado, piénsalo.
Yo ya lo he probado y se muestra el cuarto registro, tal como él quiere.
  #11 (permalink)  
Antiguo 24/10/2006, 08:39
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
  #12 (permalink)  
Antiguo 24/10/2006, 08:52
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 4 meses
Puntos: 4
Tienes razon Panino5001, lo he estado analizando y si, es cierto, la consulta debe ser como tu dices:

Código PHP:
$consulta "SELECT id FROM trprecios WHERE peso_inicial <= ".$pesok." AND peso_final >= ".$pesok
Gracias por la observación. Saludos
  #13 (permalink)  
Antiguo 24/10/2006, 09:14
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Es que era una consulta retorcida. Esperemos que le sirva al amigo CarlosFocus
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 19:58.