Ir para conteúdo

POWERED BY:

Arquivado

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

kania

Selecionar varios dados distintos dentro da mesma tabela

Recommended Posts

Olá pessoal, tenho os eguinte select:

 

SELECT a1.uf, a1.nome, a1.inscricao, count( * ) total
FROM ASSOCIADOS3 a1, ASSOCIADOS3 a2
WHERE a2.patrono = a1.inscricao
AND a1.tipo = 'AC'
AND a2.inscricao <> 'CTTGENESE'
AND a2.datacadastro > '2008-10-12'
GROUP BY a1.uf, a1.nome, a2.patrono, a1.inscricao
ORDER BY total DESC

O que preciso fazer é contar quantos itens tem em nome de uma mesmo ASSOCIADO (campo inscricao identifica o login deste associado), ou seja se um associado cadastrou 5 pessoas no campo patrono aparecera 5 vezes o login deste associado,a té ai tudo bem e o comando acima esta fazendo certinho o problema é que um ASSOCIADO pode ter mais de uma login dentro do mesmo CPF/CNPJ. ai eu preciso alem de somar agrupar pelo CPF/CNPJ, até dei um GROUP BY a1.cpfcnpj porem não funionou, associados que tem mais de um cadastros ainda continuam aparecendo como somente um.

 

Alguém tem alguma idéia de como da para fazer isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

depende da estrutura..

 

pelo que entendi, talvez algo simples como uma subselect resolveria

 

no mysql é possível fazer esse tipo de subselect

 

exemplo:

SELECT 
	 fieldID
	,filed2
	, ( SELECT SUM( field1 ) FROM table2 WHERE T.field1 = fieldID ) AS subtotal
FROM 
	table1 AS T
ORDER BY field3 ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

pense num SELECT singular

 

 

SELECT 
	 campo1
	,campo2
	,campo3
FROM 
	tablela1

um dia alguem pensou..

"seria bom se pudesse fazer um SELECT ali na definição de campos"

 

e fizeram..

 

SELECT 
	 campo1
	,campo2
	, ( SELECT campoA FROM tabela2 WHERE campoA = 1 ) AS campoA
FROM 
	tablela1

Ao invés de puxar o valor de um campo dentro da "tabela1", é puxado um valor dentro de "tabela2", provindo do "campoA"

 

os nomes são fictícios, tente entender o funcionamento apenas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Hinon, então veja como ficou meu select, depois de sua ideia dei tbm uma implementadas por aqui.

 

SELECT
  a1.cpfcnpj,
  min(a1.uf) uf,
  min(concat(a1.tipo, ' - ', a1.nome)) nome,
  min(concat(a1.tipo, ' - ', a1.inscricao)) inscricao,
  count(*) total 
FROM
  ASSOCIADOS3 a1,
  ASSOCIADOS3 a2
WHERE
  a2.patrono = a1.inscricao AND
  a1.tipo in ('AC','LV') AND
  a2.inscricao <> 'CTTGENESE' AND
  a2.datacadastro > '2008-10-12' 
GROUP BY 
  a1.cpfcnpj
ORDER BY 
  total desc

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.