Consulta sql devoloper

26/11/2017

0

Boa tarde!
Preciso realizar uma consulta em uma tabela, na qual retorne a quantidade de registros determinado por mês, e tipo do porte do animal (o banco de dados é de um petshop, na qual o animal é cadastrado em uma tabela, e na outro o seu porte, pequeno, medio, e etec). a consulta deveria retornar: abril,50,grande.
Na tb_prest_servicos, temos os serviços realizados, e data (que esta no formato dd/mm/yyyy), que esta ligada com a tb_animal, que por sua vez esta ligada com
tb_porte (onde contem o porte do animal).
Preciso de ajuda pra relizar essa consulta pois não faço ideia de como realiza-la.
agradeço desde já!
Filipe Romano

Filipe Romano

Responder

Post mais votado

27/11/2017

Fiz as alterações e deu "missing expression", fiz mais algumas alterações e deu "MONTH": identificador inválido".
o primeiro código com as alterações que você falou ficou assim:
SELECT YEAR((DATA_ENTRADA)) AS ANO , 
MONTH(DATA_ENTRADA) AS MES
	 ,[PORTE]
     , COUNT(SERVICO_ID)	AS QUANTIDADE
  FROM TB_PREST_SERVICOS
       INNER JOIN TB_ANIMAL ON TB_PREST_SERVICOS.ANIMAL_ID = TB_ANIMAL.ANIMAL_ID
	   INNER JOIN TB_TIPO_ANIMAL ON TB_PREST_SERVICOS.ANIMAL_ID = TB_TIPO_ANIMAL.ANIMAL_ID
 GROUP BY YEAR((DATA_ENTRADA)) AS ANO
        , MONTH(DATA_ENTRADA) AS MES
		, [PORTE];

o que eu alterei ficou assim:
SELECT YEAR(DATA_ENTRADA)  , 
MONTH(DATA_ENTRADA) 
	 ,TB_TIPO_ANIMAL.PORTE
     , COUNT(SERVICO_ID)	
  FROM TB_PREST_SERVICOS
       INNER JOIN TB_ANIMAL ON TB_PREST_SERVICOS.ANIMAL_ID = TB_ANIMAL.ANIMAL_ID
	   INNER JOIN TB_TIPO_ANIMAL ON TB_PREST_SERVICOS.ANIMAL_ID = TB_TIPO_ANIMAL.ANIMAL_ID
 GROUP BY YEAR(DATA_ENTRADA) 
        , MONTH(DATA_ENTRADA)
		,TB_TIPO_ANIMAL.PORTE;

Filipe Romano

Filipe Romano
Responder

Mais Posts

27/11/2017

Luiz Santos

Bom dia Filipe.

Sua consulta ficaria mais ou menos assim.

SELECT YEAR((CAMPO_DATA) AS ANO
     , MONTH(CAMPO_DATA) AS MES
	 , [CAMPO_PORTE]
     , COUNT(CAMPO_SERVICO)	AS QUANTIDADE
  FROM tb_prest_servicos
       INNER JOIN tb_animal ON [COLUNAS PARA FAZER A LIGAÇÃO ENTRE AS TABELAS]
	   INNER JOIN tb_porte  ON [COLUNAS PARA FAZER A LIGAÇÃO ENTRE AS TABELAS]
 GROUP BY YEAR((CAMPO_DATA) AS ANO
        , MONTH(CAMPO_DATA) AS MES
		, [CAMPO_PORTE]


Substitua as tags que eu coloquei pelos seus campos.

Grande abs
Responder

27/11/2017

Filipe Romano

Entao, eu preenchi ele assim:
SELECT YEAR((DATA_ENTRADA) AS ANO
     , 
MONTH(DATA_ENTRADA) AS MES
	 , [PORTE]
     , COUNT(SERVICO_ID)	AS QUANTIDADE
  FROM TB_PREST_SERVICOS
       INNER JOIN TB_ANIMAL ON [ANIMAL_ID]
	   INNER JOIN TB_TIPO_ANIMAL ON [ANIMAL_ID]
 GROUP BY YEAR((DATA_ENTRADA) AS ANO
        , MONTH(DATA_ENTRADA) AS MES
		, [PORTE];

porém deu erro de "missing right parenthesis", alguma ideia de onde eu errei na hora de preencher?
Responder

27/11/2017

Luiz Santos

O right parentesis, está na primeira linha. Você tem 2 abrindo, a esquerda, e um fechando, a direita.
Mas o seu JOIN também vai dar erro.
Você, depois do ON, precisa colocar TB_PREST_SERVICOS.ANIMAL_ID = TB_ANIMAL.ANIMAL_ID
E no segundo ON TB_PREST_SERVICOS.ANIMAL_ID = TB_TIPO_ANIMAL.ANIMAL_ID

Faça essas modificações e veja se funciona.

Grande abs
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar