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

Seleccionar los archivos calificados

Estas en el tema de Seleccionar los archivos calificados en el foro de Mysql en Foros del Web. Bueno, esto va más bien para los amantes de las consultas SQL. Tengo 3 tablas bases: Perfil - Id. - Nombre. Archivo - Id. - ...
  #1 (permalink)  
Antiguo 09/06/2011, 18:38
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Pregunta Seleccionar los archivos calificados

Bueno, esto va más bien para los amantes de las consultas SQL.

Tengo 3 tablas bases:

Perfil
- Id.
- Nombre.

Archivo
- Id.
- Perfil.
- Tipo.

Calificación
- Id.
- Archivo.
- Perfil (Quien ha calificado).
- Puntaje.

Me piden seleccionar los 10 últimos archivos del perfil 1, a su vez me debe indicar de esa lista cuáles son los que un perfil 2 ha calificado y cuánto calificó.

Bueno, lo que he hecho realmente es seleccionar por perfil de Calificación y perfil de Archivo, pero sencillamente no me muestra los otros archivos que se han publicado en ese perfil.

A ver si alguien brilla, desde ya gracias.
  #2 (permalink)  
Antiguo 10/06/2011, 05:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Seleccionar los archivos calificados

Código MySQL:
Ver original
  1. SELECT id as idArchivo FROM Archivo WHERE perfil=1 ORDER BY id DESC LIMIT 10

Los diez últimos de perfil=1

Código MySQL:
Ver original
  1. SELECT Archivo as idArchivo, SUM(if(Perfil=2,Puntaje,0)) as CalificacionP2 FROM Calificacion GROUP BY Archivo

Calificacion concenida a cada archivo por perfil 2

Ahora lo juntamos

Código MySQL:
Ver original
  1. SELECT Sbc1.idArchivo,
  2.              IFNULL(Sbc2.CalificacionP2,0) as ValoracionP2
  3. (SELECT id as idArchivo
  4.           FROM Archivo
  5.           WHERE perfil=1
  6.           ORDER BY id DESC LIMIT 10) as Sbc1
  7. (SELECT Archivo as idArchivo,
  8.               SUM(if(Perfil=2,Puntaje,0)) as CalificacionP2
  9.           FROM Calificacion
  10.            GROUP BY Archivo) as Sbc2
  11. ON Sbc1.idArchivo=Sbc2.idArchivo;


Si? La nota para mi...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 10/06/2011 a las 06:18 Razón: faltaba la ultima linea ON....

Etiquetas: seleccionar
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:38.