1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Consulta Mysql (count)

Discussão em 'Programação' iniciada por Vandong, 6 de Setembro de 2012. (Respostas: 2; Visualizações: 750)

  1. Vandong

    Vandong Power Member

    Boas,

    Estou aqui de volta de uma consulta ao qual não consigo implementar o que quero. Vou explicar as tabelas envolvidas para perceberem melhor:

    Tenhe 3 tabelas:

    Tabela: Empresa (armazena os dados de uma empresa, tem id, nome, morada, etc..)
    Tabela: ContactosEmpresa (armazena os contactos da empresa, está numa tabela porque uma empresa poderá ter vários contactos)
    Tabela: Processo (armazena processos onde estão envolvidos as empresas)

    Empresa - (PK)IDEmpresa, Nome, Morada,...
    ContactoEmpresa - (PK)IDContacto, (PK,FK)IDEmpresa, nomePessoa, telf1, telf2, email
    Processo - (PK)IDProcesso, Descricao, (FK)IDEmpresa, ....


    Processo (N)--------(1)Empresa(1)-------(N)ContactoEmpresa


    Agora a minha dificuldado:
    Pretendia efectuar uma consulta que listasse todas as empresas e mostrar o nº de processos que está envolvido e fiz isto e funcionou perfeitamente:

    Código:
    SELECT E.IDEmpresa, E.Nome, E.Morada ,COUNT(P.IDProcesso) AS NumProcessos
    FROM Empresa E
    LEFT JOIN Processos P ON (P.IDEmpresa = E.IDEmpresa)
    GROUP BY E.IDEmpresa
    ORDER BY IDEmpresa
    
    O problema é que eu quis que tambem fosse possivel na listagem pesquisar os contactos, então aí adicionei a tabela ContactoEmpresa à consulta e aí deu "barraca", uma vez que a coluna NumProcessos da consulta já não está correcto:

    Código:
    SELECT E.IDEmpresa, E.Nome, E.Morada, COUNT(P.IDProcesso) AS NumProcessos
    FROM Empresa E
    LEFT JOIN ContactosEmpresa CE ON (CE.IDEmpresa= E.IDEmpresa)
    LEFT JOIN Processos P ON (P.IDEmpresa= E.IDEmpresa)
    GROUP BY E.IDEmpresa
    ORDER BY IDEmpresa
    
    O que estará mal na 2º consulta? para o numProcessos não mostrar correctamente.
     
    Última edição: 6 de Setembro de 2012
  2. Expertinfo

    Expertinfo Power Member

    o erro encontra-se no group by.
     
  3. Vandong

    Vandong Power Member

    Como assim? Então tenho que agrupar pelo o código da Empresa.
    O que sugeres então?
     

Partilhar esta Página