Código PHP:
$query=("Select * from players WHERE pl_apno >= '".$_POST['desde']."' and pl_apno <= '".$_POST['hasta']."' ORDER BY pl_apno");
| |||
>= y <= al hacer una consulta a la BD quiero que me traiga como resultados que son >= y <= que las condiciones especificadas, pero el <= no me funciona, funciona pero como <, los resultados que son <= los deja fuera del resultado. Esta bien esta sintaxis o hay que emplear otra?. Desde ya muchas gracias. Dejo la consulta en cuestion Código PHP: |
| |||
Respuesta: >= y <= Creo que tu problema no es con MysQL. Lanza la consulta desde PHPMyADmin con datos concretos, sin variables, y con BETWEEN... AND... , como te aconseja Genetix, situando entre comillas y en este orden los datos de las fechas SELECT * FROM players WHERE pl_apno BETWEEN '2008-05-02' AND '2008-05-15' Si funciona es que el problema lo tienes con las variables PHP, porque no carga alguna, no carga los datos en el orden adecuado (¿en qué orden se introducen los datos en los inputs, año-mes-día?). Si no funcionara y hubiera fechas, tal vez el campofecha no es un campo DATE en la base. Revisa todo eso. |
| |||
Respuesta: >= y <= jurena, gracias por responder, pero no hay ningun campofecha. Lo que quiero es hacer una consulta con un rango: que sea desde >= a "algo" y <= a "otra cosa", lo que no funciona es el <=, solo trae resultados q cumplen con el <, y no con el <= |
| |||
Respuesta: >= y <= Y entonces ¿qué clase de campo es pl_apno? ¿qué guardas en él? ¿son números como INT, texto como VARCHAR o qué? Pon un ejemplo concreto de tus datos y dinos qué quieres encontrar. Solo necesitamos la sintaxis de MySQL no de PHP. Última edición por jurena; 21/05/2008 a las 14:19 |
| |||
Respuesta: >= y <= Gracias por responder. El campo pl_apno es de tipo TEXT y guarda apellidos y nombre. Si en la tabla "players" estan guardados los siguientes apellidos: MONJE ALONSO CARRIZO ZANETTI AHUMADA y la consulta es SELECT * FROM players WHERE pl_apno >= 'A' AND pl_apno <= 'Z' ORDER BY pl_apno; deberia devolver todo el contenido de la tabla como resultado. Pero de esa manera no incluye en el resultado a ZANETTI. O sea, hay un valor en la tabla que se deberia incluir en el resultado y no lo hace. Si hago la consulta de esta forma: SELECT * FROM players WHERE pl_apno >= 'A' AND pl_apno <= 'ZZ' ORDER BY pl_apno; si incluye a ZANETTI en el resultado, pero estoy agrandando el rango!!! Tendrá algo que ver que el campo este definido como TEXT y no como VARCHAR? Disculpen si no me explique correctamente. |
| |||
Respuesta: >= y <= Claro que agrandas el rango, pero es que lo que buscas está dentro del rango agrandado y no del otro. Me explico: si dices antes de 'A' te recoge todo lo que empieza por A desde 'A', y 'A' está antes que 'AA', pero 'Z' está antes que 'Zanetti'. Si no, ordena una cadena de texto donde tengas escrito en un campo Z y en otro Za y verás cómo ordena la Z antes que Za. Puedes usar en lugar de ZZ , 'Z%'. Pruébalo. Si vas a buscar por inicial, también podrías usar substr(nombrecampo,1,1): un ejemplo que te busca todos los registros que hay entre la l y la m. select * from tutabla where substring(campo,1,1) between 'l' and 'm' order by campo Última edición por jurena; 22/05/2008 a las 11:29 |
| |||
Respuesta: >= y <= De nada, aunque la pista nos la dio gnzsoloyo. Otra cosa: por qué usas TEXT para un campo que tal vez deberías tener como varchar. Revisa los requerimientos de tus datos y si no van a pasar los 255 caracteres, creo que varchar te ofrece algunas ventajas. |