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

Select condicional (if)

Estas en el tema de Select condicional (if) en el foro de Mysql en Foros del Web. Buenas, tengo un problema un poco complicado (almenos por mi :P). Tengo este codigo: select codi,nombre,Tpts from Prof join usuarios on Prof.IDU=usuarios.codi where Tpts<=$ptsrangui and ...
  #1 (permalink)  
Antiguo 26/03/2009, 13:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
Select condicional (if)

Buenas, tengo un problema un poco complicado (almenos por mi :P).
Tengo este codigo:

select codi,nombre,Tpts from Prof join usuarios on Prof.IDU=usuarios.codi where Tpts<=$ptsrangui and if((Tpts=$ptsrangui), usuarios.codi<$rang[$rangui], usuarios.codi<1000000) order by Tpts desc, Prof.IDU desc limit 0 , 10


El problema lo tengo con el if: if((Tpts=$ptsrangui), usuarios.codi<$rang[$rangui], usuarios.codi<1000000)

No havia tratado nunca con sentencias condicionales en mysql y me he inventado esto pero claro no esta bien i por google no hay casi nada.
Por favor me pueden decir donde está el error?
  #2 (permalink)  
Antiguo 26/03/2009, 13:47
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Select condicional (if)

Hola marti92

No le veo mucho sentido a tu consulta.
Dinos que tratas de hacer y comenta un poco el significado de las variables.

Un saludo y bienvenido al foro.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 26/03/2009, 14:11
 
Fecha de Ingreso: marzo-2009
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Select condicional (if)

Sorry,
gracias por contestar lo siento por no haberme explicado (no había posteado nunca)
es que llevo un lío que no veas con eso

$ptsrangui y $rang[$rangui] son dos valores numericos
y quiero que seleccione los registros con el campo Tpts igual o inferior a $ptsrangui y si $ptsrangui es igual a Tpts se seleccionen los campos con usuarios.codi inferior a $rang[$rangui].

Mi idea era hacer una paginación de una clasificación por puntos de los usuarios y si estos tienen los mismos puntos (Tpts) se ordenen de mas nuevo a mas antiguo por su codigo que es auto increment y cuando un usuario mire la clacificación se vea a el en la pagina sin que el servidor haya de cargar todos los campos.

Epero que se entienda y gracias por la paciencia con los novatos :P
  #4 (permalink)  
Antiguo 26/03/2009, 18:38
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Select condicional (if)

Bueno marti92.
Creo que tu consulta está algo inconclusa a la realidad.
al parecer, tu tratas de generar un campo con base a una condición en el where (No creo que sea posible).
También hay que tener en cuenta que la cantidad de registros de tus ifs, pueden ser diferente. (mysql trabaja en forma matricial para la busqueda y visualizacion de los datos)
En el where tratas de comparar si Tpts <= $ptsrangui y al mismo tiempo comparas si es igual para generar otros resultados.

Te recomiendo simplificar un poco tu consulta y darle un poco de trabajo a php para lograr los datos que deseas.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 26/03/2009, 22:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Select condicional (if)

Soy de la opinión de huesos52, y también creo que tu consulta puede hacerse, si es que he entendido bien

select codi,nombre,Tpts from Prof join usuarios on Prof.IDU=usuarios.codi where Tpts<100 OR (Tpts=100 AND usuarios.codi<50) order by Tpts desc, Prof.IDU desc

Buscas los inferiores a 100 y también los que siendo iguales tengan un usuarios.oci inferior a 50, y quieres que te ordene por Tpts descendente y en caso de coincidencia en este orden, subordene por el Prof.IDU desc
  #6 (permalink)  
Antiguo 27/03/2009, 05:17
 
Fecha de Ingreso: marzo-2009
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Select condicional (if)

Gracias tu solución funciona

Código:
 select codi,nombre,Tpts from Prof join usuarios on Prof.IDU=usuarios.codi where Tpts<$ptsrangui OR (Tpts=$ptsrangui AND usuarios.codi<$rang[$rangui]) order by Tpts desc, Prof.IDU desc
Tambien encontre otra forma de hacerlo planteandome de forma diferente el problema e intentado simplificar como me dijeron:
Código:
 select codi,nombre,Tpts from Prof join usuarios on Prof.IDU=usuarios.codi  order by Tpts desc, Prof.IDU desc limit $rango , 10
donde $rango es un valor que corresponde al primer usuario con mas puntos en la pagina i solo puede tener valores que van de diez en diez emezando por 1 : 1, 11, 21, 31 etc si los pongo de diez en diez.
Muchas gracias por la ayuda.
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:36.