1
resposta

[Dúvida] Dúvida

Eu vi que ela declarou assim

SELECT * FROM clientes

SELECT * FROM pedidos

SELECT c.nome, p.id, p.datahorapedido 
FROM clientes c 
INNER JOIN pedidos p 
ON c.id = p.idcliente;

Mas em programação isso seria impossível, pois p. e c. só existem na linha seguinte, correto? Em SQL essa estrtura não é rígida igual na programação?

1 resposta

Oii Pedro,

No SQL existe uma ordem em que a consulta é processada. Dependendo da ordem desse processo, você consegue acessar os alias ou não.

A primeira parte a ser processada é o FROM e o JOIN quando houver. Logo, quaisquer apelidos aqui ficam disponíveis no select.

Se você tiver uma subconsulta, essa subconsulta é a primeira coisa a ser processada. Logo, os apelidos dentro dela também ficam disponíveis para o select mais externo.

Vou te deixar uma lista com a ordem dessa execução:

  1. Subsconsultas
  2. FROM e JOINs
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. SELECT
  7. DISTINCT
  8. ORDER BY
  9. LIMIT

Então, essa ordem não é exatamente "linha a linha" como geralmente acontece em linguagens de programação.

Espero ter ajudado!