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

Juego "el precio justo"

Estas en el tema de Juego "el precio justo" en el foro de Mysql en Foros del Web. Buenos días. Me gustaría realizar un juego por el cual un usuario introduzca una serie de precios y si coinciden con el precio real de ...
  #1 (permalink)  
Antiguo 12/03/2016, 05:59
 
Fecha de Ingreso: diciembre-2015
Mensajes: 10
Antigüedad: 8 años, 4 meses
Puntos: 0
Juego "el precio justo"

Buenos días.

Me gustaría realizar un juego por el cual un usuario introduzca una serie de precios y si coinciden con el precio real de un producto le devuelva ganador.

La base de datos sería

id | articulo | precio | text_jugador
----------------------------------------
1 | art1 | 12 | 10,16,30
2 | art2 | 650 | 500,650,1000
3 | art2 | 650 | 650,600,1000
...

Con el siguiente código: SELECT * FROM table AS t WHERE t.precio LIKE t.text_jugador; consiguo detectar el ganador 3 pero el jugador 2 el cual también introdujo su valor correcto no lo detecta.

¿Alguna idea?
  #2 (permalink)  
Antiguo 12/03/2016, 10:42
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: Juego "el precio justo"

Primero que nada, LIKE busca patrones y tu la estas usando para igualdades.
En segundo lugar, estas usando un campo multivaluado, lo que está mal, y sólo lograrás consultas inexactas, ineficientes y complicadas.
Con una base de datos mal diseñada no vas a lograr hacer el proyecto como debería ser.
__________________
¿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 13/03/2016, 12:46
 
Fecha de Ingreso: diciembre-2015
Mensajes: 10
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Juego "el precio justo"

Entiendo.

Toca repensar la estructura de la tabla para que cada precio introducido por un jugador se guarde en cada fila.

Simplemente quería saber si de esta forma se podría hacer algo u hubiera alguna función que recorriera números,...

Gracias.
  #4 (permalink)  
Antiguo 13/03/2016, 15:07
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Juego "el precio justo"

Si generas un array() dividiendo por las comas, para luego comparar la respuesta ingresada y esto lo haces por cada fila... no veo ningun problema, puedes hacerlo

revisa la funcion explode()
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 13/03/2016, 15:39
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: Juego "el precio justo"

Cita:
Iniciado por petit89 Ver Mensaje
Si generas un array() dividiendo por las comas, para luego comparar la respuesta ingresada y esto lo haces por cada fila... no veo ningun problema, puedes hacerlo

revisa la funcion explode()
@petit89: Esa es una solución por programación, algo estrictamente OFF TOPIC en los foros de BBDD. Lee las reglas del subforo, por favor.

Lo que pregunta es por la consulta SQL, y para ese caso, toda solución es ineficiente, porque está usando campos multivaluados, algo prohibido en el modelo relacional de bases de datos.
__________________
¿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; 13/03/2016 a las 15:45
  #6 (permalink)  
Antiguo 13/03/2016, 15:49
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: Juego "el precio justo"

Cita:
Iniciado por keiva Ver Mensaje
Entiendo.

Toca repensar la estructura de la tabla para que cada precio introducido por un jugador se guarde en cada fila.

Simplemente quería saber si de esta forma se podría hacer algo u hubiera alguna función que recorriera números,...

Gracias.
No existen en MySQL funciones para recorrer colecciones, y en los DBMS que existen, no aplican a contenidos de campos, sino a cursores y no e sel caso.
Existen funciones en MySQL que admiten buscar datos de un mismo campo separados por comas, pero el problema es que eso crea consultas igual de ineficientes y sin precisión, dado que no podrían diferenciar ni separar un solo dato si el mismo aparece repetido. Y tendrías que crear un SP para poder el dato buscado.
En otras palabras, es un método totalmente ineficiente. Inoptimizable.

Lo mejor es ajustarse a una base normalizada. Reduce redundancias, aumenta la precisión y confiabilidad.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: juego, precio, select
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 15:35.