Eu tenho 2 consultas, ambas funcionam bem e puxam os resultados que estou procurando. No entanto, preciso ser capaz de executar uma consulta a partir dos resultados de outra. Este é t-sql/mssql/sybase
Por exemplo, a consulta a seguir funciona para contar o número de vezes/linhas que cada valor aparece na coluna 'referred_link' da tabela de casos e me mostra apenas aqueles que aparecem 3 ou mais vezes:
SELECT cases.referred_link, count(*)
FROM CASES
GROUP BY referred_link
HAVING COUNT(*) >= 3
A próxima consulta extrai vários dados de várias tabelas e filtra os critérios necessários. O problema é que eu só quero que essa segunda consulta seja executada nos resultados da primeira consulta... itens que aparecem mais de 3 vezes na tabela refer_link.
select * from cases inner join names on cases.referred_link=names.names_id
left join (select * from mailing_list_defined where mailing_list='home_addr') a
on names.names_id=a.names_id
left join party on cases.casenum=party.case_id
where names.person='Y' and date_opened>=today()-6 and party.our_client='Y' and party.role='Plaintiff'
Eu tentei algo assim (não funciona, é claro):
select * from cases inner join names on cases.referred_link=names.names_id
left join (select * from mailing_list_defined where mailing_list='Mattar Stars') a
on names.names_id=a.names_id
left join party on cases.casenum=party.case_id
where names.person='Y' and date_opened>=today()-6 and party.our_client='Y' and party.role='Plaintiff'
and names_id IN (SELECT cases.referred_link, count(*)
FROM CASES
GROUP BY referred_link
HAVING COUNT(*) >= 3)
Alguém pode me apontar na direção correta de como isso poderia ser feito?
Quando você coloca uma subconsulta entre IN(…), você deve garantir que ela retorne exatamente uma coluna. Indo pela sua outra consulta, parece que cases.referred_link já é um names_id , então você já está praticamente lá. Tudo o que você precisa fazer é remover essa contagem extra(*) da lista de colunas selecionadas.
Então, o que acontece se você usar um simples
JOIN
? AJOIN
condição provavelmente está errada porque não sei quais colunas vinculam as 2 consultas.