elaborando un cálculo basado en dos campos mysql

Quiero calcular una "calificación" promedio para mis cócteles en una tabla. Hay un tblRating vinculado a tblCocktail y dentro de esta tabla está "valor" y "contador". "valor" contiene la calificación de 1 a 5 que un usuario puede dar a cada cóctel, y "contador" contiene el valor "1". Quiero calcular la calificación promedio para cada cóctel sumando todos los "valores" y dividiéndolos por el número de "contadores"

Nunca antes había hecho cálculos matemáticos basados ​​en campos php, por lo que se agradece cualquier ayuda.

-mate

preguntado el 03 de mayo de 12 a las 10:05

2 Respuestas

Probablemente no necesite el campo de contador, el AVG función puede calcular promedios sin necesidad de un contador:

SELECT AVG(value)
FROM tblRating
WHERE cocktail_id = 1234

Notas

  • Puede contar el número de filas dentro de la tabla de calificación para determinar el número de calificaciones
  • NULL los valores no se tienen en cuenta cuando se calcula el promedio
  • Debe ceñirse a la escala elegida y no permitir valores fuera del rango de 1 a 5

contestado el 03 de mayo de 12 a las 10:05

Aquí hay un ejemplo que debería hacer lo que quiere, obviamente sin tener el esquema de tabla completo no es posible ser más preciso, pero el ejemplo debería mostrar la idea:

SELECT c.name, AVG(r.value)
FROM tblCocktail c
JOIN tblRating r ON c.id = r.cocktail.id
GROUP BY c.id, c.name

Básicamente, está seleccionando todos los cócteles de tblCocktail y calculando el promedio de la calificación (r.value).

contestado el 03 de mayo de 12 a las 10:05

disculpas, debería haber puesto los nombres de los campos de mi tabla, "cocktailID" es la clave principal/foránea vinculada, y "valor" / "contador" son los campos que tienen datos de calificación colocados en ellos. No estoy muy seguro de dónde debe implementarse este código y qué variable/valor debe repetirse para el promedio. - Matt Heywood

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.