Você herdou uma query de 400 linhas
Alguém pergunta de onde vem aquele número — e a resposta não está escrita em lugar nenhum. Ler de cima pra baixo não resolve: a ordem em que a query está escrita não é a ordem em que ela acontece.
Então, em vez de ler, desenha. É isso que esta página faz.
São três passos: uma IA lê a sua query e devolve a lista de caixas, você cola a lista aqui, e o desenho aparece. No fim, baixa um arquivo só — abre no navegador, funciona offline.
Da sua query até o desenho, em 3 passos
-
Peça a lista para uma IA
Ninguém transcreve 400 linhas de query na mão. Copie o prompt abaixo, cole no ChatGPT (ou Claude, ou Gemini) e, no fim dele, troque
<cole a sua query aqui>pela sua query.Leia a query SQL no fim deste prompt e devolva a linhagem dela como dois arrays JavaScript, NODES e EDGES. Devolva só o código, sem explicação. NODES — uma caixa para cada tabela e para cada camada: {id:'PED', label:'fat_pedido', kind:'src', grain:'1 linha por pedido'} kind:'src' = tabela que já existe no banco (aparece num FROM ou JOIN e não é definida na query) kind:'cte' = camada criada dentro da query (WITH ... AS, subquery nomeada) kind:'out' = a query final. Exatamente uma, com id 'FIM' e label 'QUERY FINAL' id = sigla curta, sem espaço, única grain = quantas linhas a caixa tem, em português: '1 linha por pedido', 'cliente × mês' EDGES — uma ligação para cada vez que uma caixa alimenta outra: {a:'PED', b:'ped_base', rel:'from'} rel:'from' = as linhas vêm dali (o FROM, ou a tabela da esquerda do JOIN) rel:'join' = só acopla coluna, não traz linha — inclua a chave: rel:'join', key:'id_pedido' rel:'union' = empilha linhas (UNION ou UNION ALL) Regras: - toda caixa citada em EDGES precisa existir em NODES - toda camada 'cte' precisa de pelo menos uma ligação 'from' chegando nela - não invente tabela que não esteja na query - se não der para saber o grão de uma caixa, escreva 'grão a confirmar' A query: <cole a sua query aqui> -
Cole a resposta na caixa
A IA devolve dois blocos,
NODESeEDGES. Apague o exemplo que está na caixa aqui embaixo e cole os dois no lugar — o desenho se refaz enquanto você digita. Se faltar alguma caixa, aparece um aviso embaixo do editor e o último desenho válido continua na tela.A IA erra. É por isso que o desenho serve: ele mostra o erro. Se uma tabela aparecer solta, ou o grão de duas caixas ligadas não bater, foi ali que ela chutou — e provavelmente é ali que a query também tem problema.
-
Baixe o arquivo
O botão Baixar este desenho monta um
.htmlúnico com os seus dados dentro. Abre com dois cliques, funciona offline, e dá pra mandar no chat pra quem te passou a query.
arraste pra percorrer · dois dedos pra dar zoom
O exemplo é a linhagem de um painel de clientes: 8 tabelas do banco, 14 camadas empilhadas no meio e 6 JOINs no fim, pra fechar uma linha de relatório. Passa o mouse numa caixa pra acender só a linhagem dela.
Como ler o desenho
Duas cores já resolvem. A cor diz o que é cada caixa; a seta diz o que ela faz.
- laranja tabela que existe no banco — dado de verdade — alguém carregou ali
- azul camada que só existe dentro da query — uma CTE — some quando a query termina
- verde a query final — o resultado que vira o relatório
- linha cheia FROM — de onde as linhas vêm
- tracejada JOIN — só acopla coluna, não traz linha
A parte que serve na segunda-feira
Com o desenho na frente, uma coisa aparece sozinha: quase tudo que chega no fim é coluna. A espinha que realmente traz linha é fina — quase sempre uma tabela só.
E é daí que sai o teste:
- Conta as linhas dessa espinha.
- Conta as linhas da query final.
- Se der diferente, algum JOIN duplicou — e o desenho deixa você prever isso antes de rodar.
Editar direto no arquivo
Dá pra pular a página inteira. Abra o .html baixado num editor
de texto: lá dentro tem um bloco marcado como
ÚNICO BLOCO QUE MUDA DE UMA QUERY PARA OUTRA — é exatamente o
mesmo conteúdo da caixa de edição aqui de cima. Troca, salva, abre no
navegador.
O grão é o campo que mais paga: escrever “1 linha por pedido” ao lado de cada caixa é o que faz a duplicação saltar aos olhos antes de você contar qualquer coisa.