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

sql. contar registros relacionados

Estas en el tema de sql. contar registros relacionados en el foro de Bases de Datos General en Foros del Web. hola a todos os cuento mi problema. tengo una tabla NOTICIAS y otras 3 relacionadas: CATEGORIAS, USUARIOS Y COMENTARIOS. gracias a este codigo consigo mostrar ...
  #1 (permalink)  
Antiguo 11/02/2005, 04:36
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años
Puntos: 0
sql. contar registros relacionados

hola a todos

os cuento mi problema.

tengo una tabla NOTICIAS y otras 3 relacionadas: CATEGORIAS, USUARIOS Y COMENTARIOS.

gracias a este codigo consigo mostrar los datos relacionado de CATEGORIAS Y USUARIOS.

Cita:
"SELECT usuarios.*, categorias.*, noticias.* FROM usuarios INNER JOIN (categorias inner join noticias on categorias.categorias_id = noticias.noticias_categoria) ON noticias.noticias_autor = usuarios.usuarios_id where categorias.categorias_noticias = true and noticias.noticias_publicada = true and noticias.noticias_categoria = " & request.querystring("cat") & " order by noticias.noticias_fecha desc"
quiero mostrar al lado de cada noticia el nº de comentarios, pero no lo consigo, ¿alguien puede ayudarme?

los datos de COMENTARIOS son:
comentarios_id "id del comentario"
comentarios_idcomentario "id de la noticia"

un saludo y gracias a todos :)
__________________
Punkis De Mierda

Foro punk rock
  #2 (permalink)  
Antiguo 11/02/2005, 06:51
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 11 meses
Puntos: 0
Si estás currando con microsoft SQLServer puedes hacerte una función del tipo:

ALTER FUNCTION dbo.NumeroComentarios
{@comentarios_idcomentario int}
RETURNS int
AS

BEGIN
declare @resultado int
set @result=(select count(*) from Comentarios
where comentarios_idcomentario=@comentarios_idcomentario )
return @result
END

Esta función te devolvería el número de comentarios que tiene una noticia (el id de la noticia quedamos en que era comentarios_idcomentario).

Y la añades a la select primera de la siguiente manera:

"SELECT usuarios.*, categorias.*, noticias.*,dbo.NumeroComentarios(noticias.noticias _id) as nComentarios FROM usuarios INNER JOIN (categorias inner join noticias on categorias.categorias_id = noticias.noticias_categoria) ON noticias.noticias_autor = usuarios.usuarios_id where categorias.categorias_noticias = true and noticias.noticias_publicada = true and noticias.noticias_categoria = " & request.querystring("cat") & " order by noticias.noticias_fecha desc"

Espero que te sirva de algo.
Salu2.
  #3 (permalink)  
Antiguo 11/02/2005, 07:44
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años
Puntos: 0
perdon, estoy trabajando con asp y access
__________________
Punkis De Mierda

Foro punk rock
  #4 (permalink)  
Antiguo 11/02/2005, 13:05
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 11 meses
Puntos: 0
Si trabajas con access prueba a añadir como columna de la select:

(select count(*) from Comentarios where Comentarios.comentarios_idcomentario=Noticias.come ntarios_idcomentario)

quedando de la siguiente forma:

"SELECT usuarios.*, categorias.*, noticias.*,(select count(*) from Comentarios where Comentarios.comentarios_idcomentario=Noticias.come ntarios_idcomentario) as nComentarios FROM usuarios INNER JOIN (categorias inner join noticias on categorias.categorias_id = noticias.noticias_categoria) ON noticias.noticias_autor = usuarios.usuarios_id where categorias.categorias_noticias = true and noticias.noticias_publicada = true and noticias.noticias_categoria = " & request.querystring("cat") & " order by noticias.noticias_fecha desc"

Espero que funcione.
Salu2.
  #5 (permalink)  
Antiguo 11/02/2005, 14:41
 
Fecha de Ingreso: noviembre-2004
Ubicación: Sevilla
Mensajes: 139
Antigüedad: 20 años
Puntos: 0
va genial :D
muchisimas gracias, no sabes el tiempo que me he tirado con eso x_D

buen fin de semana
__________________
Punkis De Mierda

Foro punk rock
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 14:29.