none
COUNT RRS feed

  • Pergunta

  • Boa tarde ,

    Estou criando um relatório de duas tabelas um node e a outra interface, cada membro da tabela node tem  nehuma, uma ou mais de uma interface, eu preciso e um relatorio da seguinte forma, node x  3 interface, node y 1 interface, mas so estou conseguido node x 4 interface node y  4 interface , alguem pode me ajudar segue abaixo o codigo sql.

    SELECT Nodes.Caption, (Select Count(Interfaces.InterfaceID )
    FROM Nodes, Interfaces
    WHERE Nodes.NodeID=Interfaces.NodeID
    )

    FROM Nodes, Interfaces
    WHERE Nodes.NodeID=Interfaces.NodeID

    Obrigado

    terça-feira, 8 de outubro de 2013 16:12

Respostas

  • Acho que para resolver o problema de sintaxe deveria ser feito primeiro um Left Join da tabela Nodes com a APM_Application, depois outro Left Join da tabela APM_Component com a  APM_Application.

    Mas dessa forma não será obtido o resultado desejado, pois esses Joins vão gerar várias combinações de linhas e os Counts vão somar todas elas.

    Experimente a sintaxe com subquery mais ou menos como você tentou no início:

    SELECT 
        n.Caption, 
        (select Count(i.InterfaceID) 
         from Interfaces as i
         where i.NodeID = n.NodeID) as "Quantidade de interface", 
        (select Count(v.VolumeID) 
         from Volumes
         where v.NodeID = n.NodeID) as "Quantidade de Volumes", 
        (select Count(c.AplicationID) 
         from APM_Application as a
         inner join APM_Component as c
             on c.AplicationID = a.ID
         where a.NodeID = n.NodeID) as "Quantidade de componetes de aplicação"
    FROM Nodes as n

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex terça-feira, 8 de outubro de 2013 17:54
    • Marcado como Resposta Giovani Cr terça-feira, 15 de outubro de 2013 20:15
    terça-feira, 8 de outubro de 2013 17:54

Todas as Respostas

  • Boa tarde,

    Experimente dessa forma:

    SELECT Nodes.Caption, Count(Interfaces.InterfaceID) as Qtd
    FROM Nodes
    LEFT JOIN Interfaces 
        ON Interfaces.NodeID = Nodes.NodeID
    GROUP BY Nodes.Caption

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    terça-feira, 8 de outubro de 2013 16:50
  • Então eu fiz a implementação e deu certo olhe como ficou mas ele esta dando um erro no ultimo left

    SELECT Nodes.Caption, Count(Interfaces.InterfaceID) as "Quantidade de interface", Count (Volumes.VolumeID)as "Quantidade de Volumes" , Count(APM_Component) as "Quantidade de componetes de aplicação"
    FROM Nodes , APM_Application
    LEFT JOIN Interfaces
        ON Interfaces.NodeID = Nodes.NodeID
    LEFT JOIN Volumes
        ON Volumes.NodeID = Nodes.NodeID
    LEFT JOIN   APM_Component
        ON APM_Application.ID = APM_Component.AplicationID AND APM_Application.NodeID= Nodes.NodeID
    GROUP BY Nodes.Caption

    poderia me ajudar

    terça-feira, 8 de outubro de 2013 17:18
  • Acho que para resolver o problema de sintaxe deveria ser feito primeiro um Left Join da tabela Nodes com a APM_Application, depois outro Left Join da tabela APM_Component com a  APM_Application.

    Mas dessa forma não será obtido o resultado desejado, pois esses Joins vão gerar várias combinações de linhas e os Counts vão somar todas elas.

    Experimente a sintaxe com subquery mais ou menos como você tentou no início:

    SELECT 
        n.Caption, 
        (select Count(i.InterfaceID) 
         from Interfaces as i
         where i.NodeID = n.NodeID) as "Quantidade de interface", 
        (select Count(v.VolumeID) 
         from Volumes
         where v.NodeID = n.NodeID) as "Quantidade de Volumes", 
        (select Count(c.AplicationID) 
         from APM_Application as a
         inner join APM_Component as c
             on c.AplicationID = a.ID
         where a.NodeID = n.NodeID) as "Quantidade de componetes de aplicação"
    FROM Nodes as n

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex terça-feira, 8 de outubro de 2013 17:54
    • Marcado como Resposta Giovani Cr terça-feira, 15 de outubro de 2013 20:15
    terça-feira, 8 de outubro de 2013 17:54
  • Vou tentar essa implementação, obrigado!
    quarta-feira, 9 de outubro de 2013 12:41
  • Boa tarde Guilherme Gomes,

    A implementação resolveu o sue problema?

    Caso sim, não esqueça de "marcar como resposta" para fechar a sua thread.

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 14 de outubro de 2013 18:09