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

consulta sql sencilla

Estas en el tema de consulta sql sencilla en el foro de Bases de Datos General en Foros del Web. Hola necesito hacerles una consulta, supongo que es re sencillo pero no me sale Tengo una base de datos con registros y esos registros tienen ...
  #1 (permalink)  
Antiguo 23/11/2010, 14:27
 
Fecha de Ingreso: mayo-2009
Mensajes: 14
Antigüedad: 15 años, 7 meses
Puntos: 0
Pregunta consulta sql sencilla

Hola necesito hacerles una consulta, supongo que es re sencillo pero no me sale

Tengo una base de datos con registros y esos registros tienen un campo "activo"

Segun ese campo activo (1 o 0) se debe mostrar o no en el sitio

lo que quiero hacer es el tipico link de "anterior" y "siguiente" pero que me devuelva unicamente los registros que figuran como "activos"

yo utilizo esta consulta, pero me devuelve siempre el id 1

SELECT id FROM tabla WHERE id<$id AND activo=1 limit 1

Desde ya agradezco la ayuda que me puedan dar

saludos
  #2 (permalink)  
Antiguo 23/11/2010, 14:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Tema movido desde PHP a Bases de Datos
  #3 (permalink)  
Antiguo 23/11/2010, 15:22
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 17 años, 1 mes
Puntos: 69
Respuesta: consulta sql sencilla

Pues suena lógico no? Lo que entiendo de tu consulta es:

SELECT id FROM tabla WHERE id<$id AND activo=1 limit 1

Me va regresar un solo resultado, siempre y cuando el id "dinámico" o variable , sea mayor...que los ids que tengas en la tabla. Lo que me pone a pensar, no importa cuantos o cuales ids yo evalue, si evaluo el 1234 por ejemplo, el 1 será menor a este id, y será el primero que encuentre. Solo NO te regresaría el 1 si el id que evalúes es 0 o algun número negativo no?
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #4 (permalink)  
Antiguo 23/11/2010, 15:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: consulta sql sencilla

Y porque no haces esto:


SELECT id FROM tabla WHERE activo=1 order by id asc

Segun lo que entiendo quieres todos los campos que tengan activo como 1 o no??
  #5 (permalink)  
Antiguo 23/11/2010, 15:46
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 sql sencilla

Cita:
Iniciado por pyaw Ver Mensaje
yo utilizo esta consulta, pero me devuelve siempre el id 1

SELECT id FROM tabla WHERE id<$id AND activo=1 limit 1
Es perfectamente lógico que te devuelva siempre el 1 por cuanto estás pidiendo que te devuelva un solo registro. Y si ese registro tiene el ID numero 1... siempre será ese.
Elimina el LIMIT o bien ponle un ORDER BY RAND(), como para que vay acambiando el que devuelve.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 24/11/2010, 05:59
 
Fecha de Ingreso: mayo-2009
Mensajes: 14
Antigüedad: 15 años, 7 meses
Puntos: 0
Pregunta Respuesta: consulta sql sencilla

Hola muchas gracias a todos por responder

El tema es el siguiente: La consulta que hago es la siguiente

SELECT id FROM tabla WHERE id<$id AND activo=1 limit 1

y lo que quiero conseguir es que, si le indico que $id = 45 y el id menor (con activo = 1) en la base de datos es el Id=41 me devuelva ese id=41 y no el id=1

O sea, el primer "id" próximo o anterior al "id que le estoy indicando" que tenga activo=1

Espero haber aclarado el tema a ver si se puede resolver

Muchas gracias
  #7 (permalink)  
Antiguo 24/11/2010, 07:03
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 sql sencilla

Se entiende la idea, pero analiza bien la lógica del WHER que pones: Le estás solicitando que te devuelva una lista con los IDs menores al que le indicas, y de esa lista que te devuelva el primero de todos.

Dado un conjunto de 44 valores menores, y considerando que por default MySQL los ordena en base a la PK, el primero de la lista será siempre el ID 1.

¿Se entiende el problema?

Lo que le falta a tu consulta es un modo que te devuelva el más cercano de los menores:

Código MySQL:
Ver original
  1. SELECT id
  2. FROM tabla
  3. WHERE id<$id AND activo=1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 24/11/2010, 07:09
 
Fecha de Ingreso: mayo-2009
Mensajes: 14
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: consulta sql sencilla

Hola gnzsoloyo, ahora si funciona!!

Muchas gracias

saludos

Etiquetas: consultas, sql
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 06:38.