Executando verificação de segurança...
5

Dica rápida para escrever scripts SQL

Muitas vezes estamos testando uma query e comentamos uma parte, descomentamos outra, e quando vamos executá-la recebemos um erro por ter uma vírgula a mais no select, uma condição AND a mais no where, e isso nos faz perder tempo.

Então aqui trago uma dica bem rápida, relacionada a organização da query na hora que estamos testando ela em um SGBD.

Uma consulta comum que retorna alguns dados sobre carrinho produto e itens do carrinho, utilizando alguns filtros de valores e tendo um cupom preenchido:

SELECT 
    product.name,
    product.value,
    cartitem.quantity,
    cart.userid
FROM 
    cart INNER JOIN cartitem ON cart.id = cartitem.cartid
    INNER JOIN product ON cartitem.productid = product.id
WHERE
    product.value > 50
    AND cart.totalvalue > 100
    AND cart.cupom IS NOT NULL

O problema que mostro aqui é quando comentamos cart.userid no select ou a condição product.value > 50 ambas gerarão erro, pois no primeiro caso terá uma vírgula a mais no último campo do select, e no segundo caso uma condição AND sobrando na consulta.

Reescrevendo e melhorando a organização temos:

SELECT 
    product.name
    ,product.value
    ,cartitem.quantity
    ,cart.userid
FROM 
    cart 
    INNER JOIN cartitem ON cart.id = cartitem.cartid
    INNER JOIN product ON cartitem.productid = product.id
WHERE 1=1
    AND product.value > 50
    AND cart.totalvalue > 100
    AND cart.cupom IS NOT NULL

No SELECT temos uma mudança da vírgula para a posição inicial e no WHERE foi adicionada uma condição que sempre retornará verdadeira, apenas para auxiliar na organização, dessa forma se product.value > 50 for comentado a consulta continua funcionando.

Conclusão

Essa forma de organizar a consulta não é uma regra e não posso nem afirmar que é a melhor forma de organizá-la, mas é a forma que eu costumo usar e deixo de dica para você que talvez nunca pensou em escrever suas queries de uma forma diferente, ou nem tem uma forma definida de como organizá-la.

Carregando publicação patrocinada...
1
1
1

O custo computacional é irrelevante, pois o banco não precisa realizar nenhuma pesquisa a mais em tabelas, é apenas uma resolução lógica dentro da query