[firebase-br] Melhorar esse SQL
Forum ASR & Associados
forum em asreassociados.com.br
Ter Abr 4 11:48:22 -03 2006
SET TERM !!;
CREATE PROCEDURE SP_INFO_PERIFERICO
(PAR_ID INTEGER)
RETURNS
(ID INTEGER
,MODELO VARCHAR ....
,SIMNAO CHAR(3)
AS
BEGIN
FOR SELECT IP.ID , IP.MODELO || ' (' || IP.MARCA || ')' AS
MODELO_MARCA,END
FROM ITEM_PERIFERICO IP
WHERE IP.ID LIKE :ID
INTO :IP , MODELO
DO
BEGIN
SIMNAO = 'NAO';
IF (EXISTS( SELECT P.RDB$DB_KEY FROM PERIFERICOS P
WHERE P.ID_ITEM_PERIFERICO = IP.ID AND
P.ID NOT IN (SELECT ID_PERIFERICO FROM
CONFIGURACAO WHERE
ID_PERIFERICO = P.ID) ) THEN
SIMNAO = 'SIM';
SUSPEND;
END
END !!
SET TERM ; !!
Espero ter ajudado,
Airton Salviano Ramos de Souza
Analista de Sistemas
www.asreassociados.com.br
.:. Enio Marconcini .:. 1010011010 .:. escreveu:
> Pessoal, alguém tem alguma sugestão para esse select, tipo se tem como fazer
> ele de uma forma que não pese na hora da consulta:
>
> SELECT
> IP.ID,
> IP.MODELO || ' (' || IP.MARCA || ')' AS MODELO_MARCA,
> CASE (
> SELECT COUNT(P.ID_ITEM_PERIFERICO) FROM PERIFERICOS P
> WHERE P.ID_ITEM_PERIFERICO = IP.ID AND
> P.ID NOT IN (SELECT ID_PERIFERICO FROM CONFIGURACAO WHERE
> ID_PERIFERICO = P.ID)
> )
> WHEN 0 THEN 'Não'
> ELSE 'Sim'
> END AS PRODUTO_EM_ESTOQUE
> FROM
> ITEM_PERIFERICO IP
>
> WHERE
> IP.ID LIKE :ID
>
> ORDER BY
> 3 DESC
>
>
> abraço
>
> --
> ENIO RODRIGO MARCONCINI
> .:. msnm: eniorm em gmail.com .:.
> .:. skype: eniorm .:.
> http://www.google.com/images/art.gif
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> [ www.iot.org.br ]
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
Mais detalhes sobre a lista de discussão lista