Como consultar múltiplos bancos e ambientes na mesma query SQL?
Consulte tabelas de outros projetos ou ambientes na mesma query, mesmo entre PostgreSQL e MySQL. Não é preciso configurar um DB Link no servidor.
Cruzar dados de dois bancos, ou olhar uma tabela de Produção enquanto a aba está em Homologação, costuma tirar você do editor. Em muitos clientes SQL isso vira exportar CSV, rodar um script à parte ou configurar um DB Link no servidor.
DB Link pede configuração e permissão extra no servidor, e costuma falhar quando os bancos são de tecnologias diferentes, como PostgreSQL e MySQL.
O Kerry Studio deixa consultar a tabela da outra conexão na mesma query. Você define um alias SQL no projeto e referencia a tabela remota como @projeto.tabela, por exemplo @billing.orders.
Na execução, o Kerry busca as linhas pela conexão salva e as coloca numa tabela temporária na conexão da aba. O JOIN roda aí, sem DB Link e sem instalar nada no servidor. A mesma sintaxe vale entre PostgreSQL e MySQL.
Você cruza os dados no editor, sem sair da query.
Como definir o alias
O alias vive no projeto, no campo Alias SQL (@alias). Sem esse nome, o editor não tem o que resolver no token.
Você precisa de um workspace aberto, de um projeto com o campo preenchido e de uma aba SQL.
- No diálogo Novo projeto ou Editar projeto, informe o alias, por exemplo
billing. O@não entra no campo. Ele só aparece no SQL. - Conecte a aba no projeto e no ambiente em que a query deve rodar.
- No editor, escreva
@projeto.tabelano lugar da tabela remota, por exemplo@billing.public.orders. - Execute. O Kerry busca as linhas e monta a temporária na conexão da aba.
A paleta (⌘K / CtrlK) → Nova Conexão abre o mesmo diálogo de projeto.
Como escrever o alias no SQL
Há dois jeitos de escrever o alias.
@projeto.tabela, por exemplo @billing.orders, usa o ambiente em que a aba está. Com schema, o caminho é o do motor: @billing.public.orders.
@projeto:ambiente, por exemplo @billing:production, usa aquele ambiente mesmo que a aba esteja em outro. O : fica só entre o alias e o ambiente. O resto continua com .: @billing:production.public.orders.
Schema, tabela e coluna usam ., nunca :. Certo: @billing.public.orders, @billing:production.public.orders. Errado: @billing:production:public.orders.
@nome sozinho, sem .tabela e sem :ambiente, é variável de usuário do MySQL (SET @s). Não é alias.
Quem define @… é você, no projeto. O alias precisa ser único entre os projetos salvos. Depois de @projeto: o editor lista os ambientes daquele projeto. Depois de @projeto:ambiente. lista schemas e tabelas daquela conexão.
O alias não troca o seletor de projeto da aba. Ele só escolhe de onde vêm aquelas linhas. Se o nome no SQL não for um projeto salvo, o editor marca o token e a execução falha com o nome que a query pediu.
Dois projetos na mesma query
Um caso comum é a aba num banco de pedidos e os clientes em outro projeto, já salvo.
-- Aba no projeto shop, ambiente Homologação.
-- @shop.public.orders segue a aba.
-- @crm.public.customers busca o outro projeto, no ambiente da aba.
SELECT
o.id,
o.status,
c.email
FROM @shop.public.orders o
JOIN @crm.public.customers c
ON c.id = o.customer_id
WHERE o.created_at > current_date - 7;Se crm for MySQL e a aba estiver em PostgreSQL, o padrão é o mesmo. O Kerry busca as linhas e o JOIN continua na conexão da aba.
Homologação e Produção na mesma query
Quando a aba está em Homologação e você quer a mesma tabela em Produção, trave o ambiente no token.
| No SQL | Aba em | O Kerry busca em |
|---|---|---|
@shop.public.orders | Homologação | Homologação do projeto shop |
@shop:production.public.orders | Homologação | Produção do projeto shop |
-- Aba no projeto shop, ambiente Homologação.
SELECT
h.id,
h.status AS status_homologacao,
p.status AS status_producao
FROM @shop.public.orders h
JOIN @shop:production.public.orders p
ON p.id = h.id
WHERE h.status <> p.status;Se você só trocar a aba de ambiente, a query no editor continua a mesma. O que muda é o token sem :ambiente, porque ele segue a aba. O token com :production continua apontando para Produção.