Jump to content

Contar Campos de uma tabela com condiçao


marcial
 Share

Recommended Posts

Boas, eu estou com um problemazito em MS SQL, tenho 3 tabelas, Utilizador, Topicos, Comentarios, e eu quero fazer um Select que tenha um campo do utilizador que é o nome da pessoa que fez o topico o titulo do topico e o numero de comentarios que esse topico tem, tenho esta procedure que me da td bem menos o numero de comentarios por topico, porque nao tou a ver maneira de fazer um ciculo que me conte os comentarios por topico. tenho isto por agra:

http://img710.imageshack.us/img710/2983/sqlq.png

Uploaded with ImageShack.us

Link to comment
Share on other sites

Tens de fazer sum e usar um group by e não fazer um ciclo para contar os comentários.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

É simples.

Fazes select campo1, campo2, sum(campo1), sum(campo2) from tabelas group by campo1, campo2

No Group By tens de meter todos os campos que não são agregados.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

mas não estou a ver onde o sum entra aqui, o sum supostamente é para somar inteiros, se eu for a somar n me da o total de rows, dame a soma dos seus valores, por exemplo tenho o coment 1 e o coment 2(ID 1 e 2 por exemplo) se usar o sum isto dame 3, e so tenho 2,

cada coment é um row na tabela comentarios e tem um campo topico (int) que tem o ID do topico a que pertence

Link to comment
Share on other sites

Ah, então usa o count em vez do sum.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

ja resolvi o problema, modifiquei completamente isto, pus um campo respostas na tabela topico e pus este codigo para ele contar os comentarios de cada topico, ta a funcionar fixe, n ha nada como um bom trigger '-' xd

ALTER TRIGGER [dbo].[trigNumRespostas]

  ON  [dbo].[Comentarios]

  AFTER INSERT

AS

DECLARE @note int

SELECT @note = (SELECT Topico FROM Comentarios WHERE  ID = IDENT_CURRENT('Comentarios'))

BEGIN

SET NOCOUNT ON;

  UPDATE [Plaza].[dbo].[Topicos]

  SET [Num_Respostas] = Num_Respostas+1

WHERE Topicos.ID = @note

END

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.