Consulta SQL

SQL é uma sigla inglesa de “Structured Query Language” que significa, em Português, Linguagem de Consulta Estruturada, uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional, usada para entre outras coisas, realizar consultas em bancos de dados e sistemas de informação.

Com o objetivo de permitir o acesso às informações do banco de dados, na geração de relatórios pelo próprio usuário/cliente, o ERPFLEX disponibilizou uma ferramenta que possibilita o cliente gerar suas próprias queries (SQL) e assim criar seus próprios relatórios.

Para gerar as queries, faz-se necessário conhecimentos básicos da linguagem SQL, portanto, esse tópico tem o propósito de somente esclarecer e permitir o manuseio das funcionalidades da tela de consulta SQL, disponibilizado no menu do sistema.

Sendo assim, deseja-se que o leitor tenha condições de criar suas queries usando os recursos disponíveis na tela do sistema, como transcrever a query, salvar, editar, definir parâmetros no momento da execução, imprimir, excluir e exportar para um formato de planilha.

A consulta gerada pode ser impressa, convertido para Excel e em formulário Flexprint.

Vamos falar um pouco da Modelagem dos Dados. Existe um dogma que diz: para se conhecer um sistema, basta estudar bem o conteúdo de suas Tabelas.

O sistema de gerenciamento de banco de dados utilizado pelo ERPFlex é o MySQL. Os dados cadastrados são mantidos em um conjunto de mais de 100 tabelas. É importante conhecê-las para, por exemplo, utilizar bem o Gerador de Relatórios, o Flexcel, o Gerador de arquivos Excel, os formulários criados no Word (RTF) e as Consultas com o uso do comando Select.

O nome de cada Tabela é composto de 3 dígitos e cada um de seus campos tem como prefixo esses 3 dígitos seguidos de um underline e do nome propriamente dito do campo.

No ERPFlex, o Banco armazena várias empresas e um campo denominado XXX_IDEA1 contém o número da Empresa (XXX é o código da Tabela). Algumas Tabelas, chamadas de Universais, não têm esse campo. Seus registros são usados por todas as Empresas, como por exemplo, a Tabela de Municípios do Brasil.

No SQL todo registro tem um ID, que é um campo com um número sequencial ascendente, gerado automaticamente, definido como chave primária e que o identifica. Para esse campo existe um índice, o que torna o acesso por meio dele bem rápido.

Todos os relacionamentos no SQL são feitos por IDs. Assim, por exemplo, na Tabela de Faturamento, onde constam os dados da Nota Fiscal, não existe um campo com o nome do Cliente, o nome do Produto ou do Vendedor. Existe o ID desses registros em suas respectivas tabelas. E o SQL mantém a Integridade Referencial, ou seja, impede que haja registros “órfãos”. Assim, por exemplo, é impossível registrar-se uma Nota Fiscal de um Cliente não cadastrado, mesmo porque isso é feito via combo-box (escolha), assim como não é possível apagar-se um Cliente que já tenha uma Nota emitida com o seu ID. E o SQL permite que se faça, com um simples comando SELECT, a leitura de um ou mais registros trazendo para a memória não somente os seus campos, mas todos os campos de todos os registros relacionados.

O SQL (Structure Query Language) tem, além do SELECT, os comandos Insert, Update e Delete para incluir-se novos registros, atualizá-los e deletá-los. Esses comandos são conhecidos como CRUD (Create, Read, Update e Delete); no entanto, a tela de consulta SQL no ERPFLEX permitirá somente a realização de pesquisa de dados, não permitindo atualizações, inserções ou mesmo exclusões.

Integridade Referencial

As tabelas do ERPFlex podem ser divididas em grupos.  Observe a seguir:

Dados Básicos

  • Empresa
    Contém os dados básicos das empresas usuárias do ERPFlex (nome, CNPJ, endereço, etc). A rigor, para cada nova empresa que vá utilizar o ERPFlex, basta criar um novo registro nesta tabela, com um Usuário de Perfil Administrador.
  •  Usuários
    Campos principais: usuário e perfil. Para fazer o Login no sistema é preciso mencionar o usuário, pelo seu nome ou email e a senha. Não confundir Usuário com Cliente. Cliente é quem compra de um Usuário do ERPFlex.
  •  Usuários x Empresa
    Esse tipo de Tabela é chamado, no SQL, de Tabela de Ligação ou Amarração. Ela é criada quando se tem um relacionamento n:n.
    Vamos analisar primeiro um relacionamento 1:n, como  por exemplo, cada Nota Fiscal só tem um cliente, cada item da nota só tem um produto, o simples ID do “Pai” no registro “Filho” é suficiente para fazer a ligação. Mas se tivermos n Usuários para uma Empresa e cada Usuário pode ter acesso a várias empresas, teríamos que ter na tabela de Usuários vários campos com os IDs das Empresas. Ocorre que ao criar uma Tabela é preciso definir claramente os seus campos. E quantos campos com IDs de Empresa teríamos? Não existe um número máximo de empresas que um Usuário pode ter.
    Para resolver esse problema, cria-se uma Tabela de Ligação Usuário x Empresa, que contém os dois IDs. Nessa tabela ainda consta o ID no MN2, que indica o perfil do Usuário naquela empresa e consequentemente o menu que será a ele disponibilizado.
  •  MN1 – Menu completo
    Nesta tabela estão todas as opções do Menu do ERPFlex, independentemente da empresa e do Perfil do Usuário e por isso o código da Empresa é zero. Contém, é claro, o nome do programa a ser chamado. A tabela MN1 é uma tabela universal, ou seja, não tem o código da empresa, pois seu conteúdo é igual para todas elas. Por outro lado, as opções que alteram essas tabelas somente são acessíveis para o perfil SUPORTE.
  •  MN2 – Perfis de Usuário
    Indica quais os perfis criados para cada empresa. A criação do perfil Administrador (que pode criar outros perfis e outros usuários) é automática e igual para todas as empresas. Posteriormente pode ser alterado por ele.
  • MN3 – Amarração entre o Perfil e as opções do menu
    Essa tabela amarra cada opção do Menu (MN1) a cada Perfil (MN2) de cada empresa. Com isso, cada perfil terá suas próprias opções, permitindo uma boa flexibilidade na disponibilização dos menus.
    Essa flexibilidade permite inclusive que se desenvolvam opções novas para funcionalidades inexistentes no ERPFlex original, disponibilizando-as apenas para aqueles usuários que as desejarem.
  • SX6 – Parâmetros
    Essa tabela serve para definir procedimentos e valores no ERPFlex, dando uma boa flexibilidade ao sistema. Número de colunas numa janela, escolha das cores na loja virtual, pequenas tabelas como códigos de serviços, faixas de CEP, alíquotas de impostos, naturezas, bancos e serviços padrão em determinadas situações, legendas e formatos nos campos adicionais, definição de procedimentos e outros são exemplos de parâmetros existentes.
    Os parâmetros permitem uma customização do ERPFlex pelo próprio usuário, desde que previamente programado. Customizações que não forem genéricas para todos usuários devem ser feitas via parâmetro, a não ser que se desenvolva programas específicos de uso restrito.

O relacionamento das Tabelas segue as formas normais estabelecidas para Banco de Dados SQL de não redundância e unicidade.

Alguns aspectos referentes à Modelagem são passíveis de discussão, como as tabelas SF1 e SD1 que guardam o cabeçalho e os itens de cada NF de Entrada. A SF2 e SD2, as NFs de saída. E claro, no SDn consta o ID do SFn. A criação de um registro para o cabeçalho com os dados gerais de um documento e n registros detalhes para cada item é uma técnica que evita a redundância de alguns dados, mas pode degradar um pouco a sua leitura, pois a cada item “filho” lido é necessário buscar os dados do cabeçalho (“pai”). Isso também é feito através do comando LEFT JOIN. No SELECT define-se quais campos se deseja. Os filtros são feitos através da cláusula WHERE.

Esquema semelhante de Cabeçalho e Item é usado no SC5/SC6 (Orçamento) e IE1/IE2 (Investimentos e Empréstimos).

Detalhamento do Processo da Carteira de Títulos

Assim é o processo da carteira de títulos, seus pagamentos e recebimentos, baixas parciais, antecipações, geração de faturas, compensação de um título com outro, descontos e acréscimos e respectivos cancelamentos:

O processo se inicia com a geração dos registros SE1 e SE2. Eles podem ser gerados de 4 formas distintas:

  1. Pela emissão de uma nota fiscal, com ou sem NF-e. O cabeçalho (que tem o ID do Cliente, a data de emissão e outros dados genéricos) é o SF1/2
  2. Pela emissão de um empréstimo ou investimento (o cabeçalho é o IE2)
  3. Pela transferência bancária (de um Banco para outro), quando são gerados um SE1 e um SE2. O cabeçalho é o SE3.
  4. Pela emissão de uma fatura, que pode ser tanto pela junção de vários títulos de um mesmo cliente/fornecedor como quando da baixa de um cartão de crédito, em que são juntadas todas as receitas ou despesas apresentadas no extrato do cartão numa única fatura que depois pode ser baixada total ou parcialmente. O cabeçalho é o SEA
  5. Quando de um pagamento ou recebimento antecipado. No caso de recebimento é gerado um SE2 do valor recebido e um SE5 do depósito. O cabeçalho é o SE7. Para retratar a obrigação com o cliente é gerado um SE1/2, em aberto, que tem como cabeçalho o mesmo SE7 e vice versa no caso de um pagamento. Quando do aproveitamento desse adiantamento, tanto o SE1 como o SE2 da nota que o está usufruindo são baixados no Caixa. No Balanço esses valores são apresentados com sinais invertidos, no mesmo estilo de contas redutoras.

Quando se baixa um título através de um recebimento/pagamento é gerado um SE5. Neste momento é gravado no SE1/SE2 no campo Valor Pago a data de baixa (preenchido esse campo, o registro é considerado baixado) e o ID do Banco. Se estiver gravada a Data de Baixa e o campo Banco não estiver preenchido é porque aquela parcela foi substituída por uma Fatura.

Se houve um desconto no SE5 é gravado o valor que entrou ou saiu do banco. No SE1/SE2, campo Valor Recebido ou Pago, é gravado o valor referente ao título, ou seja, é somado o desconto, mas não é somado o acréscimo e é gerado um SE5 com o valor do Desconto, depositado (no caso de título a receber) no Caixa e gerado um SF,SD e SE1/2 referente ao Desconto já baixado no Caixa. Exemplo: tem-se um título de 100 a receber, que na baixa sofre um desconto de 5. Debita-se 95 no Banco e 5 no Caixa e credita-se 100 no Cliente. A seguir, debita-se 5 em Despesa com Descontos e credita-se 5 no Caixa, matando o débito anterior.

No caso de acréscimo, o SE5 do título vai com seu valor original e é gerado um SF, SD e SE referente à receita (no caso de Título a Receber), que é depositado no mesmo banco.

Se for um recebimento ou pagamento parcial, o valor é gravado (somado no caso de várias baixas parciais, concatenando-se o nome do banco) em Valor Pago do SE1/2 e é gravada a data de baixa e gerado um SE5. A diferença entre o Valor do Título e o Valor Pago é a dívida atual.

Portanto, para saber qual o valor a receber ou a pagar da empresa, basta ler o SE1 e SE2 e subtrair o Valor do Título do Valor pago. Para saber quanto entrou e saiu de dinheiro na empresa, basta ler o SE5. Isso só é válido quando se está falando no saldo atual. Se considerarmos uma data anterior não, pois é possível termos várias baixas parciais de um título e neste caso no SE1 e SE2 ele vai somando em Valor Pago as várias baixas e sobrepondo a data de baixa. Para saber-se o valor exato em aberto em uma data retroativa, só mesmo lendo o valor original e subtraindo os SE5 anteriores àquela data, pois a data de baixa não é concatenada; somente o Banco.

Quando é gerada uma Fatura, no SE1/SE2 original, é gravada a data de baixa, lembrando que numa fatura não pode ser jogado um valor parcial do título. O controle passa a ser feito nos SE1/SE2 da fatura. O título original, onde é gravado o valor pago, é considerado como baixado, a fatura não. Neste momento também é gravado um SEA, que é o cabeçalho da fatura, tendo inclusive como data de emissão a data do evento e o ID do SA1, ou seja, dados análogos ao SF1/SF2.  É nos relatórios de Títulos a Receber que se vê claramente que o título original está baixado e a fatura não. Recapitulando, Faturas são geradas em duas situações: quando se junta várias Notas em um único Boleto e quando se paga/recebe os vários itens de um extrato de Cartão de Crédito.

No caso de Compensação (um título a receber é compensado por um título a pagar do mesmo cliente/fornecedor) é gerado um SE5 para os dois. Ambos os valores são lançados no caixa. No SE8 é gravado a origem e o destino na compensação. Equivale a fazer-se a baixa dos dois títulos contra o Caixa.

No caso de Antecipação de Pagamentos e Recebimentos, a baixa correspondente é feita no ato da geração da nota. Na data de Antecipação é gravado um SE1/2 com sinal negativo, com cabeçalho SE7 e um SE5. Assim, nas posições de Contas a Receber e a Pagar eles aparecem subtraindo do total.

Nome Descrição
SED Naturezas
AC1 Valor Acumulado das Naturezas
SBA Categorias e Subcategorias de Produtos/Serviços
SB1 Produtos/Serviços
SB2 Saldos das Variantes
SB2_DESCITENSVAR Nomes dos Itens de Variantes
SB2_ITENSVAR Discrimina o SB2_DESCITENSVAR (Um ID para cada item)
SB2_SBW Estoque por Armazém
SBL Cadastro de Lotes
SB2_SBW_SBL Saldo dos lotes por armazém
SB3 De/para dos códigos de produtos dos fornecedores/clientes
SBB Variantes
SBC Variantes de cada Produto
SBE Atributos loja virtual
SBD Opção do atributo
SBF Amarra SBE x SB1
SB1_UM Unidades de Medida para o SPED
SB1_Fator Fator de Conversão da UM para o SPED
SAO Operadores
SBK Kit de Produtos
SBP Tabela de preços
SBW Armazéns
NCM Nomenclatura Comum do Mercosul
SG1 Estrutura
SD3 Movimento Interno (Requisições, Devoluções e Produção)
SD4 Movimentação por Armazém/Lote de cada SD1, SD2 e SD3
SC2 Ordens de Produção e Serviços
SOB Operações
SAO Operadores
SC8 Ficha de Produção
SC9 Itens da Ficha de Produção
SAA Perfil/Item dos Clientes
SA1 Clientes e Fornecedores
SAC Cliente x Perfil x Item
SAR Relacionamento de parentes de cada cliente
SAQ Contatos de Clientes e Fornecedores
SA1_SA3 Clientes x Vendedores
SA1_SEP Clientes x Formas de pagamento
SA3 Vendedores
SAB Vendedor x Produto
SA4 Transportadoras
SA5 Terceiros
SE7 Cabeçalho dos Pagamentos e Recebimentos antecipados
SE8 Amarra as compensações de títulos a receber e a pagar
SEA Cabeçalho da Fatura
SEP Formas de pagamento
SEF Antigo Faturas – não é mais usado
IE1 Cadastro de Investimentos e Empréstimos
IE2 Movimentação de Investimentos e Empréstimos
SI1 Saldos iniciais do Plano Referencial
SI2 Lançamentos Contábeis de Ajuste
SPD Plano Referencial ou Plano próprio
SPD_ALT Alteração de cliente e produtos para o SPED
SPM Lançamentos Manuais no SPED
SB1_UM Unidades de Medida para o SPED
SB1_Fator Fator de Conversão da UM para o SPED
EV1 Eventos do CRM
EV2 Tipo de Ocorrências
EV3 Evento x Tipo de Ocorrências
EV4 Ocorrências
SR1 Calendário do Agendamento
SR2 Recursos a serem agendados
SR3 Agendamentos
SD5 Contrato
SD6 Itens dos Contratos
SD7 Situação do Contrato
IMG Nome dos arquivos imagens de cada produto e de cada cliente
ET1 Layout das etiquetas
ET2 Linhas das etiquetas
VI1 Integração com Vitrine
API Tabela de correspondência de campos entre a API e o ERPFlex
APU Tabela de Usuários que têm permissão de usar a API para uma empresa específica
Dic_colunas Usado pelo Gerador e Browser (SX3). Vale para todo mundo
Dic_database Para separar Bancos
Dic_indicadores Indicadores default do ERPFlex
SP3 Fórmulas dos Indicadores dos usuários
SP4 Visão do usuário no Painel de Gestão (quais indicadores são mostrados)
Dic_modulos Tabelas possíveis de serem usadas em combobox, no Flexcel para campos tipo consulta
Dic_relacoes São as relações usados no Gerador de Relatórios
Dic_tabcompart Usado no Compartilhamento de Tabelas e Consolidação de uma Empresa
Dic_tabelas São as Tabelas que podem ser chamadas no Gerador
RPT_Defines Define os relatórios criados
RPT_Parameters Define os parâmetros de cada relatório
SPR Dicionário de Registros para os acertos no SPED
SP5 Campos do Flexcel (filho do SP6)
SP6 Definições do Flexcel  (pai do SP5)
SPxnnnn Dados do Flexcel  (Cada Tabela Flexcel)
SP7 Consulta do SQL
SZ Tabelas de rotinas específicas de clientes
SZ1 Fornecedores x Produtos
SZ2 Clientes x Produtos
SZ3 Clientes x Contatos
SP1 SP2 Pipeline (desativado)
DR1 e DR2 Despesa e Receita (desativado)
LOG_SYS, , SX1, SX2, SX9, SXZ, SZ1…D, TEMPX Sem uso
CFOV, ESTAT, MN1V, PRODUTOS, SACV, SB1V, SB2V, SG1V VIEWS
ESTAT dados de uso do sistema pelos clientes
Tem também functions e triggers
  1. Acesse Consulta e Relatórios, Personalizados, Consulta SQL;
  2. Clique no Botão Nova Consulta;
  3. Defina um Nome para a Consulta (Relação de Clientes);
  4. Entre com os dados para gerar uma Consulta:

    SELECT  SA1_Desc,  SA1_Fantasia,  SA1_End,  SA1_Numero,  SA1_Bairro,  SA1_Mun,  SA1_Est, SA1_CEP,  SA1_CPF,  SA1_Inscr
    FROM SA1

    • Essa consulta exibe dados (apenas alguns) dos clientes/fornecedores, sendo que SA1 é a tabela de Clientes/Fornecedores. Caso queira mudar o nome de exibição na consulta utilize a clausula “AS”, ex. SA1_Desc AS ‘Nome’


  5. Clique no Ícone  para executar a Consulta;
  6. Pode-se ainda formatar o tipo de dados das colunas clicando no ícone .
    Ex. SA1_Numero defina como numérico e 0 (zeros) para casas decimais, clique em Salvar para assumir a alteração.
  7. Para definir parâmetros de uma Consulta clique em + Adicionar e altere o título para Estado e selecione o Tipo Caracter.
    O Tipo Consulta permite listar dados de um cadastro na janela de parâmetro. O botão Configurar abre uma janela para definir especificações conforme o tipo do campo, como tamanho.
  8. Clique em Salvar para gravar o parâmetro.
  9. Na área da consulta, adicione a clausula WHERE conforme demonstrado abaixo:

    SELECT  SA1_Desc,  SA1_Fantasia,  SA1_End,  SA1_Numero,  SA1_Bairro,  SA1_Mun,  SA1_Est, SA1_CEP,  SA1_CPF,  SA1_InscrFROM SA1WHERE  SA1_Est = ‘$param1’

     


    Observação: Pode-se incluir vários parâmetros em uma consulta ex.

  10. Em seguida, clique em – Salvar a consulta será disponibilizada na relação de consultas.
  11. Clique no botão Executar para processar a consulta.
  12. Na execução da Consulta será solicitado o Estado que deseja consultar ex. ‘SP’.

Agrupando dados da Consulta

Para agrupar dados da Consulta, incluindo subtotais para os dados numéricos, basta arrastar o nome da coluna até a linha indicada.

Alterando uma Consulta

Para editar o código de uma consulta, clique no botão Editar na lista de Consultas.

Excluindo uma Consulta

Para deletar uma consulta, clique no botão Excluir na lista de Consultas.

  1. Acesse Consulta e Relatórios, Personalizados, Consulta SQL;
  2. Clique no Botão Nova Consulta;
  3. Defina um Nome para a Consulta (Relação de Clientes/Vendedor);
  4. Entre com os dados para gerar uma Consulta:

    SELECT SA1_Desc, SA1_Contato, SA1_DDDCom, SA1_TelCom, SA1_EMail, SA3_Desc FROM SA1INNER JOIN SA1_SA3 ON SA1_SA3_IDSA1 = SA1_IDINNER JOIN SA3 ON SA1_SA3_IDSA3 = SA3_ID


    Observação. Como exemplo, fazemos um Inner Join com a tabela SA1_SA3 que é a Tabela de Clientes x Vendedores com a tabela SA1(Clientes/Fornecedores), e em seguida fazemos outro Inner Join com a SA3 para relacionarmos o Vendedor cadastrado.

  5. Em seguida, clique em – Salvar a consulta será disponibilizada na relação de consultas.
  6. Clique no Ícone  para executar a Consulta;

SELECT contém cláusulas específicas que permitem definir melhor a leitura;

SELECT SA1_Desc, SA1_Contato, SA1_DDDCom, SA1_TelCom, SA1_EMail, SA3_Desc

FROM SA1

INNER JOIN SA1_SA3 ON SA1_ID = SA1_SA3_IDSA1

INNER JOIN SA3 ON SA1_SA3_IDSA3 = SA3_ID

ORDER By: coloca os registros lidos na sequencia desejada pode ser ASC (ascendente) ou DESC (descendente), caso não especifique será considerada ASC (ascendente)

SELECT SA1_Desc, SA1_Contato, SA1_DDDCom, SA1_TelCom, SA1_EMail, SA3_Desc

FROM SA1

INNER JOIN SA1_SA3 ON SA1_ID = SA1_SA3_IDSA1

INNER JOIN SA3 ON SA1_SA3_IDSA3 = SA3_ID

ORDER BY SA1_Desc ASC

GROUP: agrupa dados segundo uma Dimensão, apresentando os totais dos campos numéricos

SELECT SA1_Desc AS “Cliente”,

SUM(SD2_ValItem) AS “Valor Faturamento”

FROM  SF2

INNER JOIN SD2 ON SD2_IDSF2 = SF2_ID

        INNER JOIN SA1 ON SA1_ID = SF2_IDSA1

        GROUP BY SA1_ID

ORDER BY SUM(SD2_ValItem) DESC

DISTINCT: lê apenas um registro de cada conteúdo do campo especificado

SELECT DISTINCT SA1_Desc, SA1_Contato, SA1_DDDCom, SA1_TelCom, SA1_EMail, SA3_Desc

FROM SA1

INNER JOIN SA1_SA3 ON SA1_ID = SA1_SA3_IDSA1

INNER JOIN SA3 ON SA1_SA3_IDSA3 = SA3_ID

ORDER BY SA1_Desc

        GROUP BY SA1_ID

SUM, MIN, MAX, AVG (Average): traz a soma, o valor mínimo, máximo, média de determinado campo

SELECT SA1_Desc AS “Cliente”,

SUM(SD2_ValItem) AS “Valor Faturamento”

FROM  SF2

INNER JOIN SD2 ON SD2_IDSF2 = SF2_ID

        INNER JOIN SA1 ON SA1_ID = SF2_IDSA1

        GROUP BY SA1_ID

ORDER BY SUM(SD2_ValItem)


SELECT SA1_Desc AS “Cliente”,

MIN(SD2_ValItem) AS “Valor Mínimo Faturamento”

FROM  SF2

INNER JOIN SD2 ON SD2_IDSF2 = SF2_ID

INNER JOIN SA1 ON SA1_ID = SF2_IDSA1

GROUP BY SA1_ID

ORDER BY MIN(SD2_ValItem) DESC


SELECT SA1_Desc AS “Cliente”,

MAX(SD2_ValItem) AS “Valor Máximo Faturamento”

FROM  SF2

INNER JOIN SD2 ON SD2_IDSF2 = SF2_ID

        INNER JOIN SA1 ON SA1_ID = SF2_IDSA1

        GROUP BY SA1_ID

        ORDER BY MAX(SD2_ValItem) DESC


SELECT SA1_Desc AS “Cliente”,

AVG(SD2_ValItem) AS “Média Faturamento”

FROM  SF2

INNER JOIN SD2 ON SD2_IDSF2 = SF2_ID

        INNER JOIN SA1 ON SA1_ID = SF2_IDSA1

        GROUP BY SA1_ID

        ORDER BY AVG(SD2_ValItem) DESC


COUNT: conta a quantidade de registros

SELECT COUNT(*) FROM SA1 WHERE SA1_TIPO = 1 (SOMENTE CLIENTES)


WHERE: filtra os dados por qualquer campo, com cláusulas de ==, !=, >, <, etc.

SELECT SA1_Desc, SA1_Contato, SA1_DDDCom, SA1_TelCom, SA1_EMail, SA1_Est, SA3_Desc

FROM SA1

INNER JOIN SA1_SA3 ON SA1_ID = SA1_SA3_IDSA1

INNER JOIN SA3 ON SA1_SA3_IDSA3 = SA3_ID

WHERE SA1_Est = ‘MG’

ORDER BY SA1_ID

GROUP BY SA1_ID

Para verificar o nome de todos os campos de uma tabela executa-se o comando a seguir, em cada tabela que deseja verificar.

SELECT * FROM SB1;

SELECT * FROM SA1;

SELECT * FROM SA3.

Serão apresentadas todas colunas as que apresentem o ID (ex. SA1_ID) é o principal da tabela. Para ligação com outra tabela, deve ser identificado o campo XX_IDXXX,  (ex. SA1_IDSA3), ou seja, todas as ligações entre tabelas são efetuadas via campo IDs.

É possível imprimir o resultado da consulta por meio um formulário Flexprint.

Para criar um formulário Flexprint:

  1. Execute a consulta, clicando no botão Executar na lista de Consultas.
  2. O botão Flexprint será disponibilizado na janela de resultado da consulta.
  3. Inicialmente, escolha a opção Todos os registros para iniciar a criação do formulário.
  4. Clique em Novo Modelo e crie o formulário, conforme as instruções do tópico Flexprint

É possível exportar o resultado da consulta para o Excel.

  1. Execute a consulta, clicando no botão Executar na lista de Consultas.
  2. O botão Exportar será disponibilizado na janela de resultado da consulta.
  3. Escolha o formato desejado.