Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mestre fyoda

[Resolvido] 2 Select com Union All e com 2 Aliases

Recommended Posts

create view status_chamado as

SELECT 
  e.nome_empresa,  
  Count( c.codigo_empresa ) as Aberto
	FROM Empresa e 
	  INNER JOIN Chamado c ON e.codigo_empresa = c.codigo_empresa
		WHERE status = 1
		   GROUP BY e.codigo_empresa


UNION ALL

SELECT 
  e.nome_empresa,  
  Count( c.codigo_empresa ) as Fechado
	FROM Empresa e 
	  INNER JOIN Chamado c ON e.codigo_empresa = c.codigo_empresa
		WHERE status = 0
		   GROUP BY e.codigo_empresa

Retorna duas Colunas:

-nome_empresa

-Aberto

 

Eu queria que retornace 3 colunas :

-nome_empresa

-Aberto

-Fechado

 

Porque a coluna Fechado não é criada ?

Os dados dela fica na coluna Aberto!

Compartilhar este post


Link para o post
Compartilhar em outros sites

create view status_chamado as

 

SELECT

e.nome_empresa,

Count( c.codigo_empresa ) as Aberto,

null as Fechado

FROM Empresa e

INNER JOIN Chamado c ON e.codigo_empresa = c.codigo_empresa

WHERE status = 1

GROUP BY e.codigo_empresa

 

 

UNION ALL

 

SELECT

e.nome_empresa,

null as Aberto,

Count( c.codigo_empresa ) as Fechado

FROM Empresa e

INNER JOIN Chamado c ON e.codigo_empresa = c.codigo_empresa

WHERE status = 0

GROUP BY e.codigo_empresa

Compartilhar este post


Link para o post
Compartilhar em outros sites

hummm neste caso acho que não precisa do Union:

SELECT

e.nome_empresa,

SUM(IF(status = 1, 1, 0)) as Aberto,

SUM(IF(status = 0, 1, 0)) as Fechado

FROM Empresa e

INNER JOIN Chamado c ON e.codigo_empresa = c.codigo_empresa

GROUP BY e.codigo_empresa

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, este SUM(IF(status = 1, 1, 0)) :

 

somar cada ocorrência encontrada quando o status for 1, se o status for outro então não deverá somar na coluna 'aberto'.

ou seja, a cada status=1 ele vai fazer um somatório para a coluna. é só p/ representar a quantidade.

 

talvez nem precise utilizar o SUM, só fiz p/ você testar aí.

 

edit: a sintaxe do IF é:

IF (expressão, condição verdadeira, condição falsa).

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao so pra ver se entendi:

1º posição: é a condicao -> se status = 1

2º posição: é para somar 1 se for verdadeiro

3º posição: seria o else , neste caso nao soma nada

 

estou certo ?

 

No caso como faria sem o Sum que você mencionou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, isto mesmo.

 

uma opção sem SUM seria:

SELECT

e.nome_empresa,

COUNT(IF(status = 1, c.codigo_empresa, NULL)) as Aberto,

COUNT(IF(status = 0, c.codigo_empresa, NULL)) as Fechado

FROM Empresa e

INNER JOIN Chamado c ON e.codigo_empresa = c.codigo_empresa

GROUP BY e.codigo_empresa

lembrando que fazendo:

SELECT COUNT(NULL)

o resultado é 0(zero).

SELECT COUNT(0)

o resultado é 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.