USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Busca avancada com SQl
Defende
JARINÚ
SP - BRASIL
ENUNCIADA !
Postada em 08/01/2008 09:35 hs            
Tenho um campo numa tabela que contem dados assim:

GRAVADOR MAGNÉTICO PARA P310 / P420 E P520

Como eu faco pra que em uma busca usando SQL ele me retorne essa linha mas apenas se passando como parametro de busca a palavra "P310"?

Grato
   
Cardoso G
Pontos: 2843 Pontos: 2843
PATOS DE MINAS
MG - BRASIL
ENUNCIADA !
Postada em 08/01/2008 13:37 hs            
select descricao from tabela where descricao like '%P310%'
   
KoRn
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 09/01/2008 11:23 hs            
achei na internet veja se ajuda
 
TRABALHANDO COM OS DADOS
INSTRUÇÃO SELECT

Esta é a instrução onipresente da SQL.

Estes exemplos abaixo poodem ser transformados em Consulta do Access:
digitar na grade QBE e salvar como consulta.

"A instrução SELECT é responsável por consultar o Banco de Dados e retornar o
as informações requeridas pelo programador." (INSTANT SQL Programming - Joe Celko)

Sintaxe

SELECT [[ALL] | DISTINCT] {<ListaDeColunasOuExpressão>|*}
FROM <NomeTabels>
[WHERE<CondiçãoDeBusca>];

CRIANDO UMA NOVA CONSULTA SQL

Consulta - Novo - Modo Estrutura - Tecle Esc - Exibir -
Modo SQL - Cole o código e Salve.

EXECUTANDO A CONSULTA

Execute a Consulta (Clique no ponto de interrogação).

SELECIONAR TODOS OS NOMES E TELEFONES DE CLIENTES

SELECT Nome, Fone FROM Clientes;

SELECIONE TODA A TABELA CLIENTES

SELECT * FROM Clientes;

SELECIONAR APENAS CLIENTES DISTINTOS - REMOVER DUPLICADOS

SELECT DISTINCT * FROM Clientes;

CONTAR CLIENTES COM TELEFONE E MUDAR NOME DO CAMPO

SELECT Count([Fone Residencial]) AS [Clientes com Fone] FROM Clientes;

REAJUSTAR TODOS OS PRODUTOS EM 3%

SELECT Produto, PUnitário AS PreçoAtual, PUnitário * 1.03 AS PreçoReajustado
FROM tblProdutos;

QUANTIDADE, O PREÇO UNITÁRIO MÁXIMO E A MÉDIA DOS PREÇOS UNITÁRIOS

SELECT Count(*) AS [Total de Produtos], Avg(PreçoUnitário) AS [Preço Unitário Médio],
Max(PreçoUnitário) AS [Preço Unitário Máximo] FROM Produtos;

NOMEDOPRODUTO E PREÇO UNITÁRIO SEPARADOS POR "tem um preço unitário de"

SELECT NomeDoProduto, 'tem um preço unitário de', PreçoUnitário FROM Produtos;

CLÁUSULA WHERE

A Cláusula Where é como um filtro. é uma condição.

CLIENTES CUJO BAIRRO SEJA MONTESE OU PARQUELÂNDIA

SELECT * FROM Clientes WHERE Bairro = 'Montese' OR Bairro = 'Parquelândia';

PREDICADOS DA CLÁUSULA WHERE: LIKE, IN e BETWEEN

LIKE - Use este quando já souber o que está procurando

IN - Este quando desejar procurar em uma lista

SELECT * FROM Clientes WHERE Nome LIKE 'Rob*';

SELET DISTINCT Código
FROM Clientes
WHERE Código IN ('JM2', 'LK5', 'DN7');

Usando o NOT:

...

WHERE Código NOT IN ...

SELECT * FROM Clientes WHERE Nome BETWEEN 'Ana' AND 'Luiz';

Usando o NOT:

... NOT BETWEEN ...

USO DO NULL, TRUE, FALSE e UNKNOWN

SELECT Nome FROM Clientes WHERE email IS NULL;

Usa-se também de maneira semelhabte os outros predicados do WHERE.

CLÁUSULA ORDER BY

Ordenar por

SELECT * FROM Clientes ORDER BY Nome DESC;

DESC ou ASC são opcionais. ASC é o default.

GROUP BY

SELECT * FROM Clientes GROUP BY Nome;

MOSTRAR VENDAS MAIS RECENTES

SELECT Código, MAX (DataVenda) FROM Pedidos GROUP BY Código;

PRODUTO MENOS VENDIDO

SELECT Código, MIN (Quantidade) FROM ItensPedidos GROUP BY Código;

SOMANDO VENDAS POR PRODUTO

SELECT Código, SUM (Quantidade) AS [Soma] FROM ItensPedidos GROUP BY Código;

CONSULTAS UNIÃO DE TABELAS (JOIN)

Teoricamente é ilimitado o numero de Tabelas que podemos adicionar a uma Consulta SQL.

INNER JOIN

Cria uma Consulta que une os registros das duas Tabelas, mas somente aqueles onde os Campos Chaves são iguais. Na jenela da Consulta dê um duplo clique na linha de relacionamento entre as Tabelas. Este é o tipo padrão do Access, o tipo 1. O tipo 2 é o LEFT JOIN e o 3 é o RIGHT JOIN. Este tipo é representado com uma linha sem setas.

SELECT * FROM Clientes INNER JOIN Pedidos ON Clientes.Código=Pedidos.CódigoCli;

Podemos usar o AND e OR para auxiliar o ON.

Gera uma Consulta com número de Campos igual à soma dos Campos das duas Tabelas e com número de registros igual a aos que atendam ao Critério em ON..

LEFT JOIN

Esta vai incluir todos os registros da Tabelas da Esquerda e somente os da Direita quando os Campos Chaves forem iguais. É representado na tela da Consulta entre as Tabelas, como uma seta para a Direita.

SELECT * FROM Clientes LEFT JOIN Pedidos ON Clientes.Código = Pedidos.CódigoCli;

RIGHT JOIN

Este inclui todos os registros da Tabela da Direita e somente os da esquerda quando as Chaves forem iguais. É representado na tela da Consulta entre as Tabelas, como uma seta para a Esquerda. A associação aqui é ao contrário: LeftJoin tem seta para a direita e RightJoin para a esquerda.

SELECT * FROM Clientes RIGHT JOIN Vendas ON Clientes.CodCli = Vendas.CodCli;

Obs.: Em todas as 3 podemos utilizar os operadores: <, >, <= e => entre outros.

FUNÇÃO COUNT

SELECT COUNT (Nome) FROM Clientes;
SELECT DISTINCT COUNT (Nome) FROM Clientes;

FUNÇÃO SUM

SELECT SUM ([Quantidade]) AS [Total de Vendas] FROM Vendas;

SELECT DISTINCT SUM (Remuneração) AS [Total do Salário] FROM Funcionários;

FUNÇÃO AVG (Média)

SELECT AVG (PUnitário) FROM Produtos;

SELECT DISTINCT AVG (PUnitário) FROM Produtos;

FUNÇÃO MAX

SELECT MAX (Remuneração) AS [Maior Salário] FROM Funcionários;

FUNÇÃO MIN

SELECT MIN (Remuneração) AS [Menor Salário] FROM Funcionários;

SUB-CONSULTAS

SELECT Nome FROM Pedidos, Clientes WHERE Pedidos.CódigoCli = Clientes.Código
   AND Pedidos.Código = (SELECT MAX (Pedidos.Código) FROM Pedidos
WHERE DataVenda >= #11-28-1989#);

 FUNCIONÁRIOS COM SALÁRIO ACIMA DE R$ 2.000,00

SELECT Nome, Remuneração FROM Funcionários
  WHERE Funcionário.Tipo = 'Supervisor' AND
  EXISTS (SELECT * FROM Funcionários WHERE Tipo = 'Segundo Grau'
  AND Remuneração >= 2000);

Se algum resultado => EXISTS = True
Se nenhum resultado => EXISTS = False

ATUALIZAÇÃO

UPDATE Clientes SET Estado = 'Ce' WHERE Cidade = 'Fortaleza';

EXCLUINDO DADOS DE TABELAS

Excluir todos os registros da Tabela Clientes:

DELETE FROM Clientes;

Excluir o Registro onde o Fone = 2883342

DELETE FROM Clientes WHERE Fone = '2883342';

EXCLUIR DADOS USANDO SUB-CONSULTA

DELETE FROM Clientes WHERE Nome IN (SELECT Nome FROM Clientes2)

Excluirá todos os registros de Clientes cujos Nomes sejam semelhantes aos de Clientes2.

   
Defende
JARINÚ
SP - BRASIL
ENUNCIADA !
Postada em 09/01/2008 11:43 hs            
Cara muito bom mesmo.
100%
   
KoRn
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 09/01/2008 14:57 hs            

Nao feche o topico porque vou procurar mais e posto aqui pra nos, falow

   
KoRn
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 09/01/2008 15:06 hs            

VB X SQL - Consultas SQL

Já que estamos trabalhando com SQL em algumas aplicações desenvolvidas em artigos, resolvi escrever um artigo sobre consultas SQL e a aplicação da teoria na prática.

Ex.:

     SELECT [DISTINCT] {*, coluna, coluna, ...}
     FROM tabela
     [WHERE condição(ões)]
     [ORDER BY {coluna, expr, apelido} [ASC|DESC]

Onde:

- DESC: ordena as linhas na ordem decrescente

- ASC: ordena as linhas na ordem crescente(default)

- ORDER BY: especifica a ordem em que as linhas recuperadas são exibidas

- Condição: é composta por nomes de colunas, expressões, constantes e um operador de comparação

- WHERE: restringe a consulta às linhas que atendem uma condição.

- DISTINCT: suprime as duplicatas (linhas duplicadas).

- FROM tabela: especifica a tabela contendo as colunas.

- SELECT: é uma lista de pelo menos uma coluna.

 

Expressões Aritméticas:

OPERADOR :   DESCRIÇÃO:

+                     SOMAR

-                      SUBTRAIR

*                     MULTIPLICAR

/                      DIVIDIR

 

Precedência(Ordem) do(s) Operador(es):

- A multiplicação e a divisão tem prioridade sobre a adição e a subtração;
- Os operadores com a mesma prioridade são avaliados da esquerda para a direita;
- Os parênteses são usados para forçar a avaliação priorizada e para esclarecer as instruções.

Ex.: SELECT name, salary, 12*(sal+100)
FROM tabela1.

Alguns operadores:
O operador BETWEEN é usado para exibir linhas baseadas em uma faixa de valores.

Ex.: WHERE sal BETWEEN 100 AND 150

No qual 100 -> limite inferior;
             150 -> limite superior.

Então a consulta retornará valores entre 100 e 150.

Use o operador IN serve para testar os valores de uma lista.

Ex.: SELECT name
       FROM tabela1
       WHERE mgr IN (7654, 7123, 7432)

A consulta retornará nomes(name) aonde o MGR seja 7654, 7123, 7432.

Use o operador LIKE serve para executar pesquisas curinga de valores de string de pesquisa válidos.

Ex.: WHERE name LIKE ‘S%’
No caso dessa condição ele pegará todos os nomes que começam com a letra S.

Use o operador IS NULL para retornar valores nulos.

Ex.: WHERE mgr IS NULL

Operadores Lógicos:

AND: Retorna TRUE se as condições de componentes for TRUE.

Ex.: WHERE sal >= 1100
       AND job = ’GERENTE

OR : Retorna TRUE se uma das condiçao(ões) de componente for TRUE.

WHERE sal > = 1100
OR job = ’GERENTE

NOT: Retorna TRUE se a condição seguinte for FALSE.

Ex.: WHERE sal >= 1100
       AND job not in(’GERENTE’,’CLERK’)

Regras de Precedência:

01. Todos os operadores de comparação.
02. NOT
03. AND
04. OR

Obs.: Use parênteses para forçar a prioridade.

Funções NVL:

Converte nulo para um valor real.

Sintax: NVL(expr1,expr2)

Expr1 -> é o valor de origem ou expressão que pode conter nulo.
Expr2 -> é o valor de destino para a conversão de nulo.

Ex.: Select NVL(comm,0) From tabela1

Se existir valores COMM nulos, o banco retornará 0 em vez de NULO.

Agora estamos no último passo, o mais importante, os objetivos agora são:

- Criar instruções SELECT para obter acesso aos dados a partir de mais de uma tabela usando as junções idênticas e não-idênticas;

- Visualizar dados que, em geral, não correspondem a uma condição de junção usando junções externas;

- Unindo uma tabela a ela mesma.
Ou seja, como obter dados a partir de uma ou mais tabelas, usando diferentes métodos disponíveis.

O que é um(a) Junção(JOIN)?

A condição de junção é usada quando é necessário dados de uma ou mais tabelas. As linhas de uma tabela podem ser unidas às linhas de outra tabela de acordo com os valores comuns existentes nas colunas correspondentes, isto é, em geral colunas de chave primária e estrangeira.

Para exibir dados a partir de uma ou mais tabelas relacionadas, crie uma condição de junção simples na cláusula WHERE.

SELECT tabela1.coluna, tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna1 = tabela2.coluna2

Tipos de Junções:

Existem 2 tipos de condições de junção:

- Junções idênticas,
- Junções não-idênticas.

Métodos de junção adicional incluem o seguinte:

- Junções externas,
- AutoJunções.

Junção Idêntica:

São chamadas de junções simples ou junções internas.

SELECT    tabela1.CD_COM, tabela1.DC_COM, tabela2.CD_COM, tabela2.DC_ASP
FROM       tabela1, tabela2
WHERE     tabela1.CD_COM = tabela2.CD_COM

A cláusula WHERE especifica como as tabelas serão unidas:
WHERE tabela1.CD_COM = tabela2.CD_COM

Porque a coluna CD_COM é comum às duas tabelas, ela deve estar prefixada pelo nome da tabela a fim de evitar ambiguidade.

Usando Apelidos de Tabela:

SELECT    e.CD_COM, e.DC_COM, e.CD_COM, d.DC_ASP
FROM       tabela1 e, tabela2 d
WHERE     e.CD_COM = d.CD_COM

No exemplo, note como os exemplos são identificados na cláusula FROM. O nome da tabela é especificado integralmente, seguido de um espaço e, em seguida, do apelido da coluna.
A tabela1 recebeu o apelido de E, a tabela2 recebeu o apelido D.

Unindo mais de Duas tabelas:

SELECT     c.name, d.ordid, i.itemid, i.itemtot, d.total
FROM        customer c, ord d, item i
WHERE      c.custid = d.custid
AND           d.ordid  =  i.ordid
AND           c.name =  "SPORT TKB";

Funções Não-idênticas:

Junção não idêntica é quando nenhuma coluna da tabela1 corresponde diretamente a uma coluna da tabela2. O relacionamente entre as duas tabelas é que a coluna SALARY da tabela1 está entre a coluna LOSAL e HISAL da tabela2.

O relacionamento é obtido por um operador que não é o igual (=) e no caso é o operador BETWEEN que foi explicado acima.

SELECT e.NAME, e.SALARY, s.GRADE
FROM tabela1 e, tabela2 s
WHERE e.salary BETWEEN s.local AND s.hisal;

Obs.: Relacionamento sem chave estrangeira.

 

FONTE :

 http://imasters.uol.com.br/artigo/2940/visual_basic/vb_x_sql_-_consultas_sql/

TÓPICO EDITADO
 
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página