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

Modificar consulta SQL

Estas en el tema de Modificar consulta SQL en el foro de Bases de Datos General en Foros del Web. Buenas, Hice hace un tiempo esta sentencia: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT ( ( SUM ( ck_rating_up ) - SUM ( ck_rating_down ) ...
  #1 (permalink)  
Antiguo 21/10/2011, 11:49
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
Pregunta Modificar consulta SQL

Buenas,

Hice hace un tiempo esta sentencia:

Código SQL:
Ver original
  1. SELECT ((SUM(ck_rating_up) - SUM(ck_rating_down))*2) +
  2. (SELECT COUNT(comment_id)AS votos FROM wp_comments WHERE comment_approved = 1 AND user_id = 107)
  3. AS total FROM wp_comments, wp_ck_karma WHERE ck_comment_id = comment_ID AND user_id = 107

que lo que hace es devolverme un número que representa el karma o la puntuación de un usuario en mi web, en este caso del usuario con id 107.

El problema es que estoy intentando hacer otra o modificar esta para que me devuelva una lista de los usuarios con mejor puntuación pero no hay manera...

Alguna sugerencia sobre cómo tengo que enfocarlo? ^^
  #2 (permalink)  
Antiguo 21/10/2011, 12:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Modificar consulta SQL


select top 10 total, user_id
from
(
SELECT ((sum(ck_rating_up) - sum(ck_rating_down))*2) +
(SELECT count(comment_id)AS votos FROM wp_comments WHERE comment_approved = 1)
AS total, user_id FROM wp_comments, wp_ck_karma WHERE ck_comment_id = comment_ID
group by user_id) as t1


Algo asi??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/10/2011, 12:47
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Modificar consulta SQL

Puees no, da error al no encontrar la columna "top 10 total" y si dejo solo "total" me saca una lista de puntuaciones que casi todas rondan el mismo número junto a la id que se va saltando números aparentemente al azar xD

Supongo que sin una lista de las tablas que tengo... es complicado ayudar xD
  #4 (permalink)  
Antiguo 21/10/2011, 12:55
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Modificar consulta SQL

select top 10 total no es una columna es que te regrese el top 10 de tu consulta.....pon un ejemplo de los datos que tus tablas que usas para hacer esta consulta :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 21/10/2011, 13:00
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: Modificar consulta SQL

Cita:
Iniciado por xavunis Ver Mensaje
Puees no, da error al no encontrar la columna "top 10 total" y si dejo solo "total" me saca una lista de puntuaciones que casi todas rondan el mismo número junto a la id que se va saltando números aparentemente al azar xD

Supongo que sin una lista de las tablas que tengo... es complicado ayudar xD
TOP es una cláusula de SQL Server, no es parte del estandar, por lo que si usas otra cosa no necesariamente funcionará.
¿Qué estás usando tu?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 21/10/2011, 13:13
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Modificar consulta SQL

Pero para el top 10 tiene que calcular el total de todos y luego devolverlo con LIMIT 10 y DESC no?

Igualmente a ver, tengo estas tablas

wp_users
id (id del usuario)
user_nicename (nombre del usuario)

wp_comments
user_id (id del usuario)
comment_id (id del comentario)
comment_approved (da 1 si el comentario esta aprovado y por lo tanto, cuenta para la puntuación)

wp_ck_karma
ck_comment_id (id del comentario)
ck_rating_up (veces que le han hecho click positivo al comentario)
ck_rating_down (veces que le han hecho click negativo al comentario)

En principio esto es todo lo necesario para hacer la consulta ^^ lo bonito sería que me devolviera el nombre del usuario, su id y la puntuación que calcula en la consulta cuya operación es esta:

(votos positivos - votos negativos)*2 + nº de comentarios aprovados que ha realizado el usuario

Sugerencias? ^^

Gracias por la ayuda! :)

Por cierto, uso MySQL, que he visto la respuesta de gnzsoloyo una vez publicada la mia.
  #7 (permalink)  
Antiguo 21/10/2011, 13:17
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: Modificar consulta SQL

Bueno, en MySQL no existe el TOP. LIMIT cumple la misma función, es decir: usa LIMIT 10 y listo.

Código MySQL:
Ver original
  1. SELECT ((sum(ck_rating_up) - sum(ck_rating_down))*2) + (SELECT count(comment_id)AS votos FROM wp_comments WHERE comment_approved = 1)  total, user_id
  2. FROM wp_comments, wp_ck_karma
  3. WHERE ck_comment_id = comment_ID
  4. GROUP BY  user_id
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 21/10/2011, 21:12
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Modificar consulta SQL

Algo falla algo falla en el cálculo xD este es el resultado que me aparece:

total user_id
2812 0
2816 2
2834 7
2828 8
2810 14
2812 35
2810 36
2810 37
2810 38
2810 39

Cuando el que tiene mayor puntuación es un usuario con 570.
  #9 (permalink)  
Antiguo 24/10/2011, 22:03
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Modificar consulta SQL

Pues no... todavía sigo ahí con eso... ^^

Alguna ayuda?
  #10 (permalink)  
Antiguo 24/10/2011, 22:22
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: Modificar consulta SQL

Probemos:
Código MySQL:
Ver original
  1.     user_id,
  2.     ((SUM(ck_rating_up) - SUM(ck_rating_down))*2) + SUM(IF(comment_approved = 1, 1, 0)) votos
  3. FROM wp_comments LEFT JOIN wp_ck_karma ON comment_ID  = ck_comment_id
  4. GROUP BY user_id DESC
__________________
¿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: select, sentencia
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 23:32.