Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/05/2009, 08:31
sataca
 
Fecha de Ingreso: enero-2002
Ubicación: Barcelona
Mensajes: 279
Antigüedad: 23 años
Puntos: 1
Respuesta: Consultas multitablas para cálculo de tops

Pues la verdad es que no he conseguido nada.

El caso es, por ejemplo en los temas más valorados. Un usuario solo puede valorar una vez, asi que en la tabla VALORACIONES guardo el id_usuario,id_tema y la valoracion. Y hago un SUM(valoracion).

No veo la manera de hacerlo en una sola consulta.
Por ejemplo SELECT DISTINCT (
a.id_tema
), b.titulo, SUM( a.valoracion )
FROM VALORACIONES a, TEMAS b
WHERE a.id_tema = b.id
Me devuelve un solo tema (cuando en realidad hay 2) y la valoracion es el total de la tabla.

Y esta SELECT DISTINCT (
a.id_tema
), b.titulo
FROM VALORACIONES a, TEMAS b
WHERE a.id_tema = b.id me devuelve los 2 temas que hay, pero no su valoración.

No sé si me explico bien....

Te pongo la estructura de la BD para ver si entiendes el problema (no hagas caso a las foreign keys, he de retocarlas):

CREATE TABLE IF NOT EXISTS `TEMAS` (
`id` int(10) unsigned NOT NULL auto_increment,
`id_usuario` int(10) unsigned NOT NULL,
`id_categoria` int(10) unsigned NOT NULL,
`titulo` text NOT NULL,
`entradilla` text NOT NULL,
`texto` blob NOT NULL,
`fecha` datetime NOT NULL,
`estado` tinyint(45) NOT NULL,
`destacado` tinyint(4) NOT NULL,
`tags` text NOT NULL,
`leido` int(11) NOT NULL,
PRIMARY KEY USING BTREE (`id`,`id_usuario`,`id_categoria`),
KEY `FK_OPINIONES_1` (`id_usuario`)
)
CREATE TABLE IF NOT EXISTS `VALORACIONES` (
`id` bigint(20) NOT NULL auto_increment,
`id_tema` bigint(20) NOT NULL,
`id_usuario` bigint(20) NOT NULL,
`valoracion` int(11) NOT NULL,
`fecha` datetime NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE IF NOT EXISTS `RESPUESTAS` (
`id` int(10) unsigned NOT NULL auto_increment,
`id_tema` int(10) unsigned NOT NULL,
`id_usuario` int(10) unsigned NOT NULL,
`titulo` text NOT NULL,
`texto` blob NOT NULL,
`fecha` datetime NOT NULL,
`estado` tinyint(4) NOT NULL,
PRIMARY KEY (`id`,`id_tema`,`id_usuario`),
KEY `FK_RESPUESTAS_1` (`id_tema`,`id_usuario`),
KEY `FK_RESPUESTAS_2` (`id_usuario`)
)
__________________
Sataca - La Retícula
www.lareticula.com