InnerJoin

select
 c.IDCLIENTE,
       c.NOMECLIENTE,
       a.descricao,
       A.idcidade
FROM cliente c left join cidade a
                     on (C.idcidade = A.idcidade)
where C.idcidade in (select idcidade from cidade where descricao starting with 'ALTO P')

select
c.IDCLIENTE,
       c.NOMECLIENTE,
       a.descricao,
       A.idcidade
FROM cliente c left join cidade a
                     on (C.idcidade = A.idcidade)
where C.idcidade in (select idcidade from cidade where descricao starting with 'ALTO P')




//INNER TRAZ AS 2 IGUAIS
//LEFT PRIORIZA TB DA ESQUERDA
//RIGHT PRIORIZA TB DA DIREITA

select
    p.idproduto,
    p.descricao,
    g.idgrupo,
    g.descricao
from grupo g right join produtos p
                on (g.idgrupo = p.idgrupo) ///correto
where g.idgrupo is null
order by g.descricao

select
    p.idproduto,
    p.descricao,
    g.idgrupo,
    g.descricao     // fazendo dessa maneira é errado
from produtos p, grupo g
where (g.idgrupo is null)
order by g.descricao


//Selecionando vendas e clientes por um periodo de datas
select v.idvenda,
       v.datavenda,
       v.totalvenda,
       c.idcliente,
       c.nomecliente
from cliente c inner join venda v
                on(v.idcliente = c.idcliente)
where v.datavenda between :dt1 and :dt2  //passando parametros e mostra a janela de seleção de datas
order by v.datavenda


//Selecionando vendas e clientes por um periodo de datas
select v.idvenda,
       v.datavenda,
       v.totalvenda,
       c.idcliente,
       c.nomecliente
from cliente c inner join venda v
                on(v.idcliente = c.idcliente)
where v.datavenda between ('11/01/2018') and ('11/08/2018') //sem parametros, modo natural
order by v.datavenda



select v.idvenda,
       v.datavenda,
       v.totalvenda,
       c.idcliente,
       c.nomecliente,
       i.iditensvenda,
       p.idproduto,
       p.descricao
from cliente c
    inner join venda v on (v.idcliente = c.idcliente)
    left join itensvenda i on (i.idvenda = v.idvenda)
    left join produtos p on(p.idproduto = i.idproduto)
where v.datavenda between :dt1 and :dt2
order by v.idvenda, p.descricao


select v.idvenda,
       v.datavenda,
       v.totalvenda,
       c.idcliente,
       c.nomecliente,
       i.iditensvenda,
       p.idproduto,
       p.descricao,
       s.idservicos,
       s.descricao
from cliente c
    inner join venda v on (v.idcliente = c.idcliente)
    left join itensvenda i on (i.idvenda = v.idvenda)
    left join produtos p on (p.idproduto = i.idproduto)
    left join servicos s on (s.idservicos = i.idservico)

where v.datavenda between :dt1 and :dt2
order by v.idvenda, p.descricao

// Selecionando utilizando case para  juntar a tabela produtos e serviços.

select v.idvenda,
       v.datavenda,
       v.totalvenda,
       c.idcliente,
       c.nomecliente,
       i.iditensvenda,
       p.idproduto,
      -- p.descricao,
       s.idservicos,
      -- s.descricao,
       case i.tipo_item
         when 'P' then p.descricao
         when 'S' then s.descricao
       end
from cliente c
    inner join venda v on (v.idcliente = c.idcliente)
    left join itensvenda i on (i.idvenda = v.idvenda)
    left join produtos p on (p.idproduto = i.idproduto)
    left join servicos s on (s.idservicos = i.idservico)


where v.datavenda between :dt1 and :dt2
order by v.idvenda, p.descricao

coalesce

Comentários

  1. https://www.devmedia.com.br/trabalhando-com-joins-no-firebird/33054

    https://www.devmedia.com.br/inner-cross-left-rigth-e-full-joins/21016

    ResponderExcluir
  2. tutorial sql avançado
    https://www.1keydata.com/pt/sql/sql-coalesce.php

    ResponderExcluir
  3. http://t2ti.com/curso/video/delphi/iniciante/delphi_starter.php

    ResponderExcluir
  4. https://king.host/wiki/artigo/como-criar-autoincrement-no-firebird/

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Banco de dados resumo..

Aula03 Html

Comandos Vim