Jump to content
Sign in to follow this  
Sergio990

Possivel realizar um selectCount e um Select ? [RESOLVIDO]

Recommended Posts

Sergio990

Boas,

É possivel fazer algo deste genero:

SELECT COUNT idInterconect FROM portas WHERE portas.idInterconect = +DDL_idInterconect.Text+;

Select nPortas from module where module.idModule = interconect.idModule and idInterconect.idInterconect=+DDL_idInterconect.Text+;


If nPortas<Select Count:
Faz qualquer coisa 
Else:
não faz nada ;D

Mas isto em código de C# pois estou a usar o ASPX.Net

Com os melhores cumprimentos,

Sérgio Rodrigues

Share this post


Link to post
Share on other sites
M6

Sim, fazes a query da contagem e depois fazes a segunda query do select normal.


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."

 

Share this post


Link to post
Share on other sites
Sergio990

Tipo o que eu queria era fazer isto:

IF Exists(select 1 (SELECT COUNT idInterconect FROM portas WHERE portas.idInterconect = '"+DDL_idInterconect.Text+"') < (Select nPortas from module where module.idModule = interconect.idModule and idInterconect.idInterconect='"+DDL_idInterconect.Text+"') from portas where nomePorta=@NomePorta) BEGIN SELECT 0 END ELSE BEGIN insert into portas (idInterconect,nomePorta,descricao) values(@idInterconect,@NomePorta,@Descricao) SELECT 1 END

So que isso da erro e ao realizar 1º uma query e depois a outra como faço para guardar o valor que ela coloca no select count e no Select nPortas?

Share this post


Link to post
Share on other sites
Sergio990

O que é isso ? :$

Tipo agora o meu orientador disse que era este select:

SELECT     (SELECT        nPortas
                          FROM            module
                          WHERE        (idModule =
                                                        (SELECT        idmodule
                                                          FROM            interconect
                                                          WHERE        (idInterconect = 6)) -
                                                        (SELECT        COUNT(*) AS portasInseridas
                                                          FROM            portas
                                                          WHERE        (idInterconect = 6)))) AS portasInseridas

So que isso nao funciona bem.

Eu separei os Selects que queria e seria:

SELECT        (SELECT        module.nPortas
                          FROM            module INNER JOIN
                                                    interconect ON module.idModule = interconect.idmodule
                          WHERE        (interconect.idInterconect = 6)) AS Expr1

Com esse select subtrair este:

SELECT        COUNT(*) AS Expr1
FROM            portas
WHERE        (idInterconect = 6)

Ou seja o select nPortas tinha 3 e Select Count ele contava 1 ele deveria de dizer que tem 2 porta disponível.

Para depois colocar o numero de portas disponíveis numa label.

E Realizar uma função para que sempre que a label for diferente de 0 de para inserir portas.

Share this post


Link to post
Share on other sites
Sergio990

Ok ja consegui fazer a subtração:

SELECT        (SELECT        module.nPortas
                          FROM            module INNER JOIN
                                                    interconect ON module.idModule = interconect.idmodule
                          WHERE        (interconect.idInterconect = 6)) -
                             (SELECT        COUNT(*) AS Expr1
                               FROM            portas
                               WHERE        (idInterconect = 6)) AS Expr1

Obrigado ;)

Share this post


Link to post
Share on other sites
edgarzigne

Não leves a mal.. MAs.. Até dói esta query..

DECLARE @idInterconect AS INT SET @idInterconect = 6  
         
SELECT M.NPortas-P.Qt Expr1
FROM Interconect I
INNER JOIN Module M ON M.IdModule = I.IdModule
CROSS APPLY
(
SELECT Count(1) Qt	
FROM Portas P
WHERE P.IdInterconect = I.IdInterconect

) P
WHERE I.IdInterconect = @idInterconect

Share this post


Link to post
Share on other sites
Sergio990

Não leves a mal.. MAs.. Até dói esta query..

DECLARE @idInterconect AS INT SET @idInterconect = 6  
         
SELECT M.NPortas-P.Qt Expr1
FROM Interconect I
INNER JOIN Module M ON M.IdModule = I.IdModule
CROSS APPLY
(
SELECT Count(1) Qt	
FROM Portas P
WHERE P.IdInterconect = I.IdInterconect

) P
WHERE I.IdInterconect = @idInterconect

tranquilo ;)

Eu não percebo muito disto por isso é normal ;D

Obrigado ;D

Ja troquei o codigo (A)

Funciona certinho ;D

Share this post


Link to post
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
Sign in to follow this  

×
×
  • 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.