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

Sentencia MySQL usando rangos

Estas en el tema de Sentencia MySQL usando rangos en el foro de Mysql en Foros del Web. Quisiera saber si esta sentencia MySQL está bien. En algunos apartados quiero buscar valores de acuerdo a diferentes rangos (entre un número y otro). "SELECT ...
  #1 (permalink)  
Antiguo 23/08/2012, 15:58
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 4 meses
Puntos: 15
Sentencia MySQL usando rangos

Quisiera saber si esta sentencia MySQL está bien. En algunos apartados quiero buscar valores de acuerdo a diferentes rangos (entre un número y otro).

"SELECT * FROM basedat WHERE Despacho = '$aduana'
AND Patente = '$patente'
AND Pedimento = '$pedimento'
AND FechaEntrega = '$fechaentrada'
AND FechaPago = '$fechapago'
AND Descripcion = '$descripcion'
AND Fraccion = '$fraccion'
AND Origen = '$origen'
AND Venta = '$venta'
AND Marca = '$marca'
AND Modelo = '$modelo'
AND NoSerie = '$noserie'
AND NoInterno = '$nointerno'
AND CatFijo = '$catactivo'
AND Planta = '$planta'
AND Expediente = '$expnumero'
AND VComercial BETWEEN '$Vrango[0]' AND '$Vrango[1]'
AND VAduana BETWEEN '$VArango[0]' AND '$VArango[1]'
AND VSeguros BETWEEN '$VSrango[0]' AND '$VSrango[1]'
AND Seguros BETWEEN '$Srango[0]' AND '$Srango[1]'
AND Fletes BETWEEN '$Frango[0]' AND '$Frango[1]'
AND Embalajes BETWEEN '$Erango[0]' AND '$Erango[1]'
AND Incrementables BETWEEN '$OIrango[0]' AND '$OIrango[1]'
AND TasaIGI = '$igi'
AND IGI BETWEEN '$Irango[0]' AND '$Irango[1]'
AND CuotaDTA = '$cuotadta'
AND DTA BETWEEN '$Drango[0]' AND '$Drango[1]'
AND TASAIVA = '$tasaiva'
AND IVA BETWEEN '$IVrango[0]' AND '$IVrango[1]'
AND TOTAL BETWEEN '$Trango[0]' AND '$Trango[1]'
AND ObsRevision = '$obsrevision'

Otra duda que tengo es que por ejemplo, quiero que si el usuario no especifica un valor en algún campo de terminado, no lo tome en cuenta a la hora de buscar. Estaba pensando ayudarme con PHP y estaba pensando en usar variables para escribir la sentencia de MySQL.

Por ejemplo. Tengo esta sentencia:

$SQL = "SELECT * FROM basedat WHERE Despacho = '$aduana' AND Patente = '$patente'";

Entonces por ejemplo, en el campo de patente, quiero darle la opción al usuario de que si no pone ningún valor no lo tome en cueenta. Entonces estaba pensando en esto.

if($patente="") {
$variablepanente = "";
} else {
$variablepatente = "Patente = ".$patente."";
}

Entonces pongo la cadena así

$SQL = "SELECT * FROM basedat WHERE Despacho = '$aduana'".$variablepanente."";

Muchas gracias
  #2 (permalink)  
Antiguo 24/08/2012, 04:48
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 16
Respuesta: Sentencia MySQL usando rangos

En PHP el operador para poner la condición de si un valor es igual a otro es "==", no "=".

En MySQL el operador de la condición de igualdad para el WHERE de un SELECT si que es "=".

No tengo claro si el tipo de campo de la tabla no te va a poner problemas por utilizar apostrofes en los que son de tipo numérico. Por hábito siempre pongo los valores con los formatos que conozco como "más correctos".

Para agregar condiciones a un "select" en función de si se recibieron o no valores para hacer los filtros en la consulta te pongo un ejemplo en PHP

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Función para agregar apóstrofes.
  4. // OJO: Puede que tengas que mejorarla para que devuelva "NULL" cuando $valor este vacía.
  5. function scm($valor)
  6. {
  7.     return '\''.$valor.'\'';
  8. }
  9.  
  10. // Función para agregar condiciones al pedazo del WHERE
  11. function addToWhere(&$xwhere, $condicion)
  12. {
  13.     if ($xwhere == '') $xwhere = ' where ';
  14.     else $xwhere .= ' and ';
  15.     $xwhere .= $condicion;
  16.    
  17. }
  18.  
  19. // Variables donde se meten los valores de los filtros que se pueden llegar a recibir
  20. $filtroDescripcion  = 'FILTRO 1';
  21. $filtroID           = '1';
  22.  
  23. // Parte principal del SELECT
  24. $qry = 'select Id_Item, Descripcion from TABLA';
  25.  
  26. // Inicialización de variable para poner el WHERE
  27. $xwhere = '';
  28.  
  29.  
  30. // Por cada filtro posible, se agrega una condicón y si procede, se agrega al WHERE
  31. if ($filtroID != '')  addToWhere ($xwhere, 'Id_Item = '.$filtroID);
  32. if ($filtroDescripcion != '')  addToWhere ($xwhere, 'Descripcion = '.scm($filtroDescripcion));
  33.  
  34. // Se concatena el WHERE a la parte principal del SELECT
  35. // OJO: SI no se recibieron filtros, el SELECT ira sin WHERE.
  36. $qry .= $xwhere.';';
  37.  
  38. // Para verificar que la sentencia es correcta, se muestra en la página,
  39. // se copia y se prueba desde phpMyAdmin o lo que sea que utilices para hacer consultas directamente en la base de datos.
  40. echo $qry;
  41. return;
  42.  
  43. ?>
  #3 (permalink)  
Antiguo 24/08/2012, 08:22
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 4 meses
Puntos: 15
Respuesta: Sentencia MySQL usando rangos

Muchas gracias, lo voy a probar

Etiquetas: php, rangos, select, sentencia, sql, campos
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 03:38.