Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvidas em relação a SÍNTAXE no exercício

Bom dia,

Uma dúvida: no exercício sobre o Faturamento Anual vemos que o código proposto (abaixo) funciona perfeitamente, mesmo sem eu precisar informar EXPLICITAMENTE à qual tabela o dado YEAR(DATA_VENDA) pertence. Por exemplo, em exemplos anteriores usamos "A.NOME, A.MATRICULA"...

SELECT YEAR(DATA_VENDA), SUM(QUANTIDADE * PRECO) AS FATURAMENTO
FROM notas_fiscais NF INNER JOIN itens_notas_fiscais INF
ON NF.NUMERO = INF.NUMERO
GROUP BY YEAR(DATA_VENDA);

Pelo o que entendi, isso ocorre porque o dado não é AMBÍGUO, correto? Isto é, o campo DATA_VENDA existe apenas na TABELA notas_fiscais, enquanto os campos QUANTIDADE* PRECO existem apenas em itens_notas_fiscais.

MINHA DÚVIDA: Vamos supor que os dados fossem ambíguos e eu precisasse dizer de qual tabela vou extrair YEAR(DATA_VENDA), SUM(QUANTIDADE * PRECO) Como eu poderia fazer?

OBS: o meu exemplo é apenas hipotético, até porque se os dados realmente fossem ambíguos eu nem precisaria usar o JOIN. Ainda assim, espero ter sido claro na minha dúvida.

Aguardo!

1 resposta
solução!

Oi Roger, tudo tranquilo?

Exatamente, por não existir o mesmo campo em outra tabela, a consulta roda normalmente. Caso existisse o mesmo campo em ambas tabelas, teria que identificar o campo com o alias (apelido) da tabela. Mesmo que não exista dados ambíguos você pode colocar o apelido da tabela para melhor entendimento, segue:

SELECT YEAR(NF.DATA_VENDA), SUM(INF.QUANTIDADE * INF.PRECO) AS FATURAMENTO

FROM notas_fiscais NF #NF é o apelido da tabela.

INNER JOIN itens_notas_fiscais INF #INF é o apelido da tabela
ON NF.NUMERO = INF.NUMERO

GROUP BY YEAR(NF.DATA_VENDA);

Espero ter ajudado. Qualquer coisa estou por aqui, tá bom? Bons estudos :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software