Comunidad de diseño web y desarrollo en internet online

Ayuda con una SQl de Mysql

Citar            
MensajeEscrito el 01 Feb 2007 03:49 pm
Hola tengo una base de datos que contiene una tabala con tres campos, Semana, Usuario y Total.
Los ususarios cada semana quedan resitrados con una puntuación que van acumulando de forma que se da algo así, pero como suponeís conmuchos mas registros y semanas:
Semana Usuario Total
2 Pepito 50
2 Juan 48
2 Toni 36
2 Ricardo 28
1 Pepito 47
1 Juan 43
1 Toni 25
1 Ricardo 15

Necestio hacer una SQL que me permita seleccionar los nombres sin repetir y con el maximo de puntos que tnegan en la casilla total.
Esta la he realizado en Access, y al verla en formato SQL es como la que expongo:

Código :

SELECT DISTINCTROW Usuario, Max(Total) AS [Máx De Total]
FROM juegoquiniela
GROUP BY Usuario
ORDER BY Max(Total) DESC;


Ahora bien si esta misma consulta la pongo en el archivo php que uso como interface para mostrar los datos en Flash no me funciona, alguien me puede decir que he de corregir para ponerla en php.

Pongo el codigo de la instrucción por si vale de algo:

Código :

$sql = "SELECT DISTINCTROW juegoquiniela.Usuario, Max(juegoquiniela.Total) AS [Max De Total]
FROM juegoquiniela
GROUP BY juegoquiniela.Usuario
ORDER BY Max(Total) DESC";
$result = mysql_query($sql);
if (mysql_num_rows($result) == 0) {
   print "&Grafico=NO";
   exit;
}


Gracias de antemano.

Por blankis

21 de clabLevel



Genero:Masculino  

Barna - España

msie7
Citar            
MensajeEscrito el 01 Feb 2007 04:43 pm
Prueba así

Código :

SELECT DISTINCT Usuario, Max(Total) AS Max
FROM juegoquiniela
GROUP BY Usuario
ORDER BY Max(Total) DESC;
no lo he probado solo modifique el que tenías de acces (acces como no al ser micro$oft usa una "version propia" de sql no exactamente iguan en sintaxis)

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 01 Feb 2007 04:52 pm
Agradezco tu ayuda, pero sigue sin funcionarme, me da error el php.

Por blankis

21 de clabLevel



Genero:Masculino  

Barna - España

msie7
Citar            
MensajeEscrito el 01 Feb 2007 07:30 pm

Código :

SELECT  Usuario, Semana, Total FROM `puntos` AS ptos1 
WHERE Total=(SELECT MAX(ptos2.Total) FROM `puntos` AS ptos2 
         WHERE ptos1.Usuario=ptos2.Usuario)

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 01 Feb 2007 08:46 pm
Gracías Maikel eres un crack.

Aunque me tendre que pelear con ella todavía un poco mas, ya que la he adaptado a mi base de datos un poco pero aún me repita algunos registros no tengo claro el porque, pero seguro que lo acabare descrubiendo.
Te pongo la adaptación que he realizado por si ves que en algún sitio cometo el error que me genera algún duplicado, ya que es raro son pocos los duplicados y no de todos los usuarios.

El codigo ahora es el siguiente:
SELECT Usuario, Total FROM juegoquiniela AS ptos1 WHERE Total=(SELECT MAX(ptos2.Total) FROM juegoquiniela AS ptos2 WHERE ptos1.Usuario=ptos2.Usuario) ORDER BY Total DESC

Repito gracias por la ayuda.

Por blankis

21 de clabLevel



Genero:Masculino  

Barna - España

msie7
Citar            
MensajeEscrito el 01 Feb 2007 08:58 pm
Bueno como decía antes todo tiene solución, sobre todo con cracks como Maikel, con vuestra colaboración estoy logrando que la Web del Club de futbol al que pertenezco logre un aspecto profesional, sin ser esto mas que mi joby.

El codigo necesitaba una palabrita que al final puse: DISTINCTROW.

Esta es la instrucción definitiva que tantos dolores de cabeza me ha dado, ahora a rompermela con otra cosa.

SELECT DISTINCTROW Usuario, Total FROM juegoquiniela AS ptos1 WHERE Total=(SELECT MAX(ptos2.Total) FROM juegoquiniela AS ptos2 WHERE ptos1.Usuario=ptos2.Usuario) ORDER BY Total DESC

Gracías.

Por blankis

21 de clabLevel



Genero:Masculino  

Barna - España

msie7
Citar            
MensajeEscrito el 02 Feb 2007 06:39 am
ehh ese SQL no es necesario Distinct row y mi consulta fue con una subconsulta porque pensaba que necesitaba semana ahora que me doy cuenta no es asi, por lo que la consulta optima seria:

Código :

SELECT Usuario, Max(Total) AS Total FROM `juegoquiniela` 
GROUP BY Usuario

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 02 Feb 2007 08:03 am
Bueno pues la verdad e sque gracias maikel, las dos funcionan, estoy intentando entender lo que hace la primera que me pusistes para aprender mejor ha realizar SQL, gracias por tu ayuda.

Por blankis

21 de clabLevel



Genero:Masculino  

Barna - España

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.