Consulta SQL complexa
06/12/2005
0
[b:74f5a1395a]A tabela de contatos pode ter mais de um registro com o mesmo nome. Por exemplo, o nome EDUARDO pode ter 5 telefones (1 residencial, 2 comerciais e 2 celulares), sendo cada um desses 5 telefones um registro.[/b:74f5a1395a]
A consulta que preciso fazer é a seguinte: na mesma linha da grid devem aparecer o nome do contato e quantidade de telefones residenciais, comerciais e celular que ele tem. No caso do EDUARDO apareceria o nome dele, na coluna ´nome´, 1 na coluna ´telefones residenciais´, 2 na coluna ´telefones comerciais´ e 2 na coluna ´telefones celular´.
Será que é possível? Ficaria muito agradecido se alguém me ajudar...
Bruno Gomes
Posts
07/12/2005
Vinicius2k
Algo como:
select ID, NOME, (select count(ID) from CONTATOS where TIPO = ´0´) as QTDE_TEL_RESIDENCIAIS, (select count(ID) from CONTATOS where TIPO = ´1´) as QTDE_TEL_COMERCIAIS, (select count(ID) from CONTATOS where TIPO = ´3´) as QTDE_TEL_CELULARES from SUA_TABELA where ...
Isto desde que o seu BD/ SGBD suporte ´subselects´. Além disto, a tendência é que esta seja uma consulta um tanto quanto demorada, dependendo do volume de dados na tabela ´CONTATOS´.
T+
07/12/2005
Bruno Gomes
07/12/2005
Bruno Gomes
Por exemplo, para mostrar a qtde de telefones do EDUARDO eu preciso fazer o seguinte select:
[color=darkblue:4b07e83402]select
CODIGO,
NOME,
(select count(ID) from CONTATOS where TIPO = ´0´ and CODIGO = 5) as QTDE_TEL_RESIDENCIAIS,
(select count(ID) from CONTATOS where TIPO = ´1´ and CODIGO = 5) as QTDE_TEL_COMERCIAIS,
(select count(ID) from CONTATOS where TIPO = ´3´ and CODIGO = 5) as QTDE_TEL_CELULARES
from
CONTATOS
where
CODIGO = 5
group by
CODIGO[/color:4b07e83402]
Essa consulta me lista somente os registros do nome EDUARDO. Eu necessito fazer a consulta para exibir TODOS os nomes da tabela, pela ordem de telefones comerciais.
07/12/2005
Emerson Nascimento
select con1.CODIGO, con1.NOME, (select count(con2.ID) from CONTATOS con2 where con2.TIPO = ´0´ and con2.CODIGO = con1.CODIGO) as QTDE_TEL_RESIDENCIAIS, (select count(con2.ID) from CONTATOS con2 where con2.TIPO = ´1´ and con2.CODIGO = con1.CODIGO) as QTDE_TEL_COMERCIAIS, (select count(con2.ID) from CONTATOS con2 where con2.TIPO = ´3´ and con2.CODIGO = con1.CODIGO) as QTDE_TEL_CELULARES from CONTATOS con1 group by con1.CODIGO
07/12/2005
Emerson Nascimento
select CODIGO, NOME, sum( case when TIPO=´0´ then 1 else 0 end) QTDE_TEL_RESIDENCIAIS, sum( case when TIPO=´1´ then 1 else 0 end) QTDE_TEL_COMERCIAIS, sum( case when TIPO=´3´ then 1 else 0 end) QTDE_TEL_CELULARES from CONTATOS group by CODIGO, NOME
20/02/2006
Guima
DISTINCT COD_PRODUTO,
QTDE,
sum( case when TIPO=´ENTRADA´ then sum(qtde) else 0 end) ENT,
sum( case when TIPO=´CONSUMO´ then sum(qtde) else 0 end) CON
from
MOVIMENTO_ESTOQUE
group by
COD_PRODUTO, QTDE
eu precisava somar as entradas - consumo - tem como desse jeito ???
Clique aqui para fazer login e interagir na Comunidade :)