Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Relacionando 2 tabelas + condição

Bom dia, Ja tentei de todas lógicas que sei e ainda nao consegui o resultado esperado. Segue meu problema: Tenho 2 tableas, [comitê] | [pilar]

[COMITE] - idcomite - titulocomite - status

[PILAR] - idpilar - pilar_idcomite - titulopilar

O que estou fazendo:

select count(idpilar) as quantidade ,titulopilar from PILAR group by titulopilar order by quantidade desc

Hoje esta contando tudo, independente do status do comite. Porem, quero fazer essa contagem apenas dos pilares cujo seu comite estejam com o status "ATIVO" como vou conseguir fazer esse relacionamento ? Ver se o status do comite ( Tenho o id dele no registro do pilar)

Desde já, agradeço pela atenção

2 respostas

Consegui dessa forma:

select count(idpilar) as quantidade ,titulopilar from PILAR,COMITE where idcomite=pilar_idcomite and status="ATIVO" group by titulopilar order by quantidade desc

Existe algo mais semantico, ou mais lógico, ou a solução é esta mesma ?

solução!

Oi Yago,

O ideal nesses casos é utilizar um join, já que sua consulta precisa de dados de 2 tabelas.

E como você está fazendo um GROUP BY, para filtrar os resultados da consulta nesse caso deve ser utilizado o operador HAVING.

Algo como:

SELECT 
    count(p.idpilar) AS quantidade,
    p.titulopilar 
FROM 
    PILAR AS p
INNER JOIN 
    COMITE as c ON c.id = p. pilar_idcomite
GROUP BY
    p.titulopilar 
HAVING 
    c.status = 'ATIVO'
ORDER BY 
    quantidade desc

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software