Array
(
)

Agrupar Tabelas

Thiagos25
   - 03 abr 2008

Fala galera.... desculpem postar no lugar errado ... mas temos um grande problema relativo ao fluxo de usuários no fórum de SQL SERVER.. quando coloco algo lá... quase sempre não é respondido.. <_< ( e quando é.... demooooooora ).... acho que por falta de usuários naquela parte do forum...
por isso... solicito uma pequena mas urgente ajuda.... seguinte...

tenho uma query:

#Código


SELECT CATEGORIA, SUBCATEGORIA, CONTEUDO
FROM(SELECT  
(SELECT COUNT(*) AS QUANTIDADE FROM CONTEUDO_CATEGORIA WHERE  
FL_ID_CATEGORIA = 0 AND  
(FL_PENDENTE = 1 OR FL_EXCLUIR = 1 OR FL_NOVO = 1)) AS CATEGORIA, 

(SELECT COUNT(*) AS QUANTIDADE FROM CONTEUDO_SUBCATEGORIA WHERE  
FL_ID_SUBCATEGORIA = 0 AND  
(FL_PENDENTE = 1 OR FL_EXCLUIR = 1 OR FL_NOVO = 1)) AS SUBCATEGORIA, 

(SELECT COUNT(*) AS QUANTIDADE FROM CONTEUDO WHERE  
FL_ID_CONTEUDO = 0 AND  
(FL_PENDENTE = 1 OR FL_EXCLUIR = 1 OR FL_NOVO = 1)) AS CONTEUDO 
) AS TABELA 



que me retorna uma tabela assim:

|CATEGORIA|SUBCATEGORIA|CONTEUDO|
1|____3_____|______5______|____2_____|

O problema é que preciso que retorne uma tabela assim:

|ITEM |QUANTIDADE|
1|CATEGORIA ___|_____3_____|
2|SUBCATEGORIA|_____5_____|
2|CONTEUDO____|_____2_____|

Então modifiquei o código dessa forma....

#Código
SELECT ´CATEGORIA´ as ITEM, QUANTIDADE
FROM(SELECT 
(SELECT COUNT(*) AS QUANTIDADE FROM CONTEUDO_CATEGORIA WHERE 
FL_ID_CATEGORIA = 0 AND 
(FL_PENDENTE = 1 OR FL_EXCLUIR = 1 OR FL_NOVO = 1)) AS QUANTIDADE
) AS CATEGORIA

SELECT ´SUBCATEGORIA´ as ITEM, * 
FROM(SELECT 
(SELECT COUNT(*) AS QUANTIDADE FROM CONTEUDO_SUBCATEGORIA WHERE 
FL_ID_SUBCATEGORIA = 0 AND 
(FL_PENDENTE = 1 OR FL_EXCLUIR = 1 OR FL_NOVO = 1)) AS QUANTIDADE
) AS SUBCATEGORIA


SELECT ´CONTEUDO´ as ITEM, * 
FROM(SELECT 
(SELECT COUNT(*) AS QUANTIDADE FROM CONTEUDO WHERE 
FL_ID_CONTEUDO = 0 AND 
(FL_PENDENTE = 1 OR FL_EXCLUIR = 1 OR FL_NOVO = 1)) AS QUANTIDADE
) AS CONTEUDO


que me retorna 3 tabelas:

TABELA1:

|ITEM |QUANTIDADE|
1|CATEGORIA ___|_____3_____|

TABELA2:

|ITEM |QUANTIDADE|
1|SUBCATEGORIA|_____5_____|

TABELA3:

|ITEM |QUANTIDADE|
1|CONTEUDO____|_____2_____|

Como unir essas três tabelas para que fiquem assim:
|ITEM |QUANTIDADE|
1|CATEGORIA ___|_____3_____|
2|SUBCATEGORIA|_____5_____|
2|CONTEUDO____|_____2_____|

abraços.
Thiago

Groove
   - 04 abr 2008

olá,
me esforcei pois naum sei nada de BD entaum chamei um amig o Bruno e ele me ajudou com seu caso,

fiz um teste com a tabela q tenho aqui mas acho q vc vai entender sem prob

#Código

SELECT ´teste´, COUNT(*) AS teste FROM status_aplicacoes WHERE  
IDAPLICACAO = 1
union
SELECT ´novoteste´ , COUNT(*) AS novoteste FROM status_aplicacoes WHERE  
IDSTATUS = 0
union
SELECT ´outroteste´, COUNT(*) AS outroteste FROM status_aplicacoes WHERE  
OBS = ´´


bem simples pois naum sei muito de BD mas funcionou e ficou como vc queira.

:idea: **--Não esqueça de responder kaso tenha dado certo ou não!!!--** :idea:

Ricardo Silva
   - 04 abr 2008

Cara, te resolvo isso com Uma Palavra ´UNION´ (rsrsrsr)

serio

Citação:

SELECT ´CATEGORIA´ as ITEM, QUANTIDADE
FROM(SELECT
(SELECT COUNT(*) AS QUANTIDADE FROM CONTEUDO_CATEGORIA WHERE
FL_ID_CATEGORIA = 0 AND
(FL_PENDENTE = 1 OR FL_EXCLUIR = 1 OR FL_NOVO = 1)) AS QUANTIDADE
) AS CATEGORIA
UNION
SELECT ´SUBCATEGORIA´ as ITEM, *
FROM(SELECT
(SELECT COUNT(*) AS QUANTIDADE FROM CONTEUDO_SUBCATEGORIA WHERE
FL_ID_SUBCATEGORIA = 0 AND
(FL_PENDENTE = 1 OR FL_EXCLUIR = 1 OR FL_NOVO = 1)) AS QUANTIDADE
) AS SUBCATEGORIA
UNION
SELECT ´CONTEUDO´ as ITEM, *
FROM(SELECT
(SELECT COUNT(*) AS QUANTIDADE FROM CONTEUDO WHERE
FL_ID_CONTEUDO = 0 AND
(FL_PENDENTE = 1 OR FL_EXCLUIR = 1 OR FL_NOVO = 1)) AS QUANTIDADE
) AS CONTEUDO


soh acrescentar UNION entre os Select e eles se uniram..
Detalhe elest tem que ter o mesmo numero de Colunas e mesmo nome de coluna