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

  1. 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>
  2. Cole a resposta na caixa

    A IA devolve dois blocos, NODES e EDGES. 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.

  3. 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.

linhagem.html

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.

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:

  1. Conta as linhas dessa espinha.
  2. Conta as linhas da query final.
  3. 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.