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

Bloquear o Inmovilizar una columna ¿Se puede?

Estas en el tema de Bloquear o Inmovilizar una columna ¿Se puede? en el foro de Mysql en Foros del Web. Buenas, estoy tratando de hacer una clasificacion deportiva, de forma que cada usuario introduce en un formulario su nombre y resultado, y en la web ...
  #1 (permalink)  
Antiguo 10/10/2012, 05:17
 
Fecha de Ingreso: octubre-2012
Mensajes: 27
Antigüedad: 11 años, 6 meses
Puntos: 0
Bloquear o Inmovilizar una columna ¿Se puede?

Buenas, estoy tratando de hacer una clasificacion deportiva, de forma que cada usuario introduce en un formulario su nombre y resultado, y en la web aparece la clasificacion.

El problema es que son 3 deportes, y existe una clasificacion para cada deporte, osea tengo 3 tablas diferentes, luego hay otra clasificacion general que suma los puntos obtenidos en cada tabla. El problema que tengo es que al hacer la consulta a la tabla (por mejor puntuacion), se desordena el campo que asigna los puntos.
Me interesaria que al primer clasificado la tabla asigne siempre 20 puntos, al segundo 18, etc... de forma que cada jugador vaya subiendo y bajando por la tabla, pero que los puntos queden invariables.

La primera y mas sencilla seria inmovilizar una columna en la tabla, de la misma forma que en EXCEL. ¿Eso es posible lograr con MySQL? Se que existe LOCK TABLES, ¿puede ir por ahi o eso solo bloquea toda la tabla y no un campo solo?

La segunda forma seria insertar automaticamente los puntos a la tabla cada vez que se haga una consulta, asi apareceran siempre ordenados segun el criterio de la consulta. Pero esto me parece un lio, y no lo veo claro tampoco

Última edición por Ziddhartax; 10/10/2012 a las 05:24
  #2 (permalink)  
Antiguo 10/10/2012, 06: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: 16 años, 4 meses
Puntos: 2658
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

Cita:
La primera y mas sencilla seria inmovilizar una columna en la tabla, de la misma forma que en EXCEL. ¿Eso es posible lograr con MySQL? Se que existe LOCK TABLES, ¿puede ir por ahi o eso solo bloquea toda la tabla y no un campo solo?
Un DBMs no es Excel, el sentido de "inmovilizar" o bloquear (lock), no es el de inmovilizar su posición en pantalla, sino el de restringir los INSETT/UPDATE/DELETE que impacten en esas columnas.
En otras palabras, no tiene absolutamente nada que ver con lo que piensas.
Cita:
El problema que tengo es que al hacer la consulta a la tabla (por mejor puntuacion), se desordena el campo que asigna los puntos.
Eso indica que el ORDER BY de esa tabla, o la consulta, están o mal redactados, o mal indicados.
¿Podrías postear la consulta usada?
Cita:
La segunda forma seria insertar automaticamente los puntos a la tabla cada vez que se haga una consulta, asi apareceran siempre ordenados segun el criterio de la consulta. Pero esto me parece un lio, y no lo veo claro tampoco
El tema aquí es que si vas a poner un valor fijo ordenado de mayor a menor, entonces los valores no tienen ninguna relación con los datos de las tablas, sino con el resultado de la salida de datos. Entonces lo que te conviene es manejar eso en la aplicación, y no meterlo a la tabla resultado de la consulta...
A mi entender, si los puntajes se relacionan con el orden de aparición en pantalla, entonces no tiene sentido hacer eso en SQL... Aunque hay un modo de lograrlo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/10/2012, 06:54
 
Fecha de Ingreso: octubre-2012
Mensajes: 27
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El tema aquí es que si vas a poner un valor fijo ordenado de mayor a menor, entonces los valores no tienen ninguna relación con los datos de las tablas, sino con el resultado de la salida de datos. Entonces lo que te conviene es manejar eso en la aplicación, y no meterlo a la tabla resultado de la consulta...
A mi entender, si los puntajes se relacionan con el orden de aparición en pantalla, entonces no tiene sentido hacer eso en SQL... Aunque hay un modo de lograrlo...
Cito esta parte porque es justo esto lo que me pasa. Los puntajes se relacionan con el resultado de la salida de datos.

Esto es un problema que para una tabla es fácil de solucionar con PHP, ya que al primer dato que aparezca le doy 40 puntos, al segundo dato 35, etc...

El problema es que PHP desconoce a quien le ha dado 40 puntos, simplemente se los da al que aparezca arriba del todo en función a la consulta antes hecha en MySQL

El problema viene porque tengo 3 deportes, o sea 3 clasificaciones diferentes. Y quiero crear una clasificacion general que a cada jugador le sume las otras tres puntuaciones y haga una global. Pero PHP no sabe quien es cada jugador, asi que he imaginado que la unica forma va a ser con MySQL
  #4 (permalink)  
Antiguo 10/10/2012, 06:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

o que dices es algo contradictorio con lo que pusiste antes:
Cita:
Me interesaria que al primer clasificado la tabla asigne siempre 20 puntos, al segundo 18, etc... de forma que cada jugador vaya subiendo y bajando por la tabla, pero que los puntos queden invariables.
Entendamos: En el contexto de una suma de puntajes para determinar el ranking, la posición de un item está relacionado con el valor obtenido de puntos para la lista en un momento dado (el de la consulta).
O son fijos, como dices en el porst #1, o son dependientes del puntaje sumado.
En el segundo caso, necesitamos ver la consulta con que obtienes la tabla a representar.
Postea esa consulta (sin nada de PHP).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 10/10/2012, 07:10
 
Fecha de Ingreso: octubre-2012
Mensajes: 27
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
o que dices es algo contradictorio con lo que pusiste antes:

Entendamos: En el contexto de una suma de puntajes para determinar el ranking, la posición de un item está relacionado con el valor obtenido de puntos para la lista en un momento dado (el de la consulta).
O son fijos, como dices en el porst #1, o son dependientes del puntaje sumado.
En el segundo caso, necesitamos ver la consulta con que obtienes la tabla a representar.
Postea esa consulta (sin nada de PHP).
Aclaro que no es algo contradictorio. Te explico, lo que has citado ahora es lo que QUIERO HACER, y lo que dije antes es LO QUE OCURRE.

Todo se resume en esto que he dicho antes:

Cita:
El problema viene porque tengo 3 deportes, o sea 3 clasificaciones diferentes. Y quiero crear una clasificacion general que a cada jugador le sume las otras tres puntuaciones y haga una global. Pero PHP no sabe quien es cada jugador, asi que he imaginado que la unica forma va a ser con MySQL
Y continuo yo mismo la frase "asi que he imaginado que la unica forma va a ser con MySQL " bloqueando la columna PUNTOS

Espero que ahora se entienda lo que me ocurre.

La consulta si quieres la pongo pero ya te adelanto que no va a servir de nada, simplemente indico que me muestre los resultados ordenados por MARCA en orden descencente, de forma que la mejor MARCA quede arriba.

Y claro, esto ultimo desordena la ultima columna, que tiene los PUNTOS, ya que como dije los PUNTOS dependen de la consulta. Por eso mi intención era bloquear dicha columna.

Edito de nuevo porque somos de paises distintos.
Vamos a llamar a la primera columna MARCA y a la segunda PUNTOS para no liarnos, porque he visto en a veces dices puntaje para decir marca y luego puntos, y claro puede confundirse puntos con puntaje.

Última edición por Ziddhartax; 10/10/2012 a las 07:20
  #6 (permalink)  
Antiguo 10/10/2012, 07:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

Postea la consulta.
Si estás ordenando por puntaje de mayor a menor, no tiene sentido que desordene precisamente esa columna.
Postea también la estructura de la tabla. Quiero verificar contra que tipo de columnas trabajas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 10/10/2012, 07:22
 
Fecha de Ingreso: octubre-2012
Mensajes: 27
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

select NOMBRE, MARCA, from $tabla1 ORDER BY MARCA DESC
  #8 (permalink)  
Antiguo 10/10/2012, 07:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

O está incompleta, o no es la consulta.
Tienes una coma antes del FROM y eso debería dar un error de sintaxis.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 10/10/2012, 07:25
 
Fecha de Ingreso: octubre-2012
Mensajes: 27
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

select NOMBRE, MARCA from $tabla1 ORDER BY MARCA DESC
  #10 (permalink)  
Antiguo 10/10/2012, 07:40
 
Fecha de Ingreso: octubre-2012
Mensajes: 27
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
O está incompleta, o no es la consulta.
Cita:
Iniciado por Ziddhartax Ver Mensaje
La consulta si quieres la pongo pero ya te adelanto que no va a servir de nada, simplemente indico que me muestre los resultados ordenados por MARCA en orden descencente, de forma que la mejor MARCA quede arriba.
Y asi es, se cumplen ambas condiciones --> select NOMBRE, MARCA from $tabla1 ORDER BY MARCA DESC

1. Esta es la forma que conozco para que muestre los resultados ordenados por MARCA en orden descencente, y 2, no sirve de nada postearla.

Última edición por Ziddhartax; 10/10/2012 a las 07:46
  #11 (permalink)  
Antiguo 10/10/2012, 08:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Bloquear o Inmovilizar una columna ¿Se puede?

1) No te molestes, estamos tratando de llegar a una conclusión útil.
2) Que digas que no sirve, no quiere decir que a nosotros no nos sirva para entender el problema.


La duda surge porque desde el SQL no es posible que si la columna "marca" es una columna de tipo numérica (INT, DECIMAL, FLOAT, etc), y la única condición es que sea ordenada de mayor a menor, se desordene. Eso sólo suele suceder si y sólo si la columna es un VARCHAR... y según se infiere, no es el caso.
Por eso te pedía la estructura de la tabla y la consulta.
Además si en la consulta real estuvieses haciendo un JOIN (no lo podemos adivinar), el JOIN podrían tener impacto en el ordenamiento de los datos, así como también si existen agrupamientos (cosa que tampoco podemos adivinar).
Con información parcial, sólo te daremos consejos parciales.
Lo que te puedo asegurar es que con lo que posteas, no debería existir un "desorden" en esa columna.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/10/2012 a las 08:38

Etiquetas: bloquear, columna, tabla, 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 12:17.