Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Bruno Silva
Acredito que vc não precise colocar o 'distinct' em select distinct
1
  from mv_vendas_pre_agenda
  where (agendamento <> 'N')
  and(pedido = a.pedido)

Bruno E. A. Silva.
Analista de Sistemas.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Marcelo Silva (IG)
Resolvido

Graças a ajuda de vocês consegui chegar a um consenso aqui:

select distinct 
  a.pedido,
  a.agendamento,
  b.descricao
from mv_vendas_pre_agenda a 
inner join mv_status b on(b.status = a.agendamento) 
where not exists(
  select distinct 
1
  from mv_vendas_pre_agenda 
  where (agendamento <> 'N')
  and(pedido = a.pedido)
)
order by a.pedido;

Mudei a estrutura do meu banco e peguei de uma outra tabela que vai guardar o 
ultimo status do servico.
E de canja o select ficou bem mais simples

Creditos especiais ao Flavio, Edson e Paulo, mas claro que todos merecem minhas 
estimas, rsrsrs valeus

Muito obrigado mesmo





From: Wagner Porto 
Sent: Thursday, May 17, 2012 3:17 PM
To: pgbr-geral@listas.postgresql.org.br 
Subject: Re: [pgbr-geral] Ajuda em Select

Boa tarde !

Marcelo, de acordo  com o teu cenário
você pode buscar pela quantidade "CODIGO"
que possui o status "N"

total de linhas = total de linhas com status "N".

Acredito ser por ai teu caminho,

Mais um detalhe, 
você não consegue incluir mais um inner join no teu segundo select ?

Ficaria + limpo

Boa sorte.

Em 17/05/2012 14:14, Marcelo Silva (IG) escreveu: 
  Pessoal, tenho o seguinte select:

  select distinct 
a.pedido,
a.status,
b.descricao
  from mv_servicos_status a 
  inner join mv_status b on(b.status = a.status) 
  where (a.data_bai + a.hora_bai) = 
(select max(data_bai + hora_bai) 
 from mv_servicos_status 
 where (pedido = a.pedido) 
   and(codigo = a.codigo) 
   and(a.pedido in(36663, 37228)))
  order by a.pedido


  Que me retorna as linhas:

  36663 | I | CONFÊNCIA PEDIDO
  36663 | N | ENTREGUE AO CLIENTE
  37228 | N | ENTREGUE AO CLIENTE

  Agora preciso de um select incorporado com o acima que me retorne somente os 
pedidos que tiverem somente ‘N’
  Ou seja o 36663 não entraria no resultado do segundo select por ter um status 
‘I’ em sua lista
  Não posso simplesmente colocar um and(status = ‘N’) porque o pedido vai 
mudando o status a cada instante

  Explicando o cenário:

  Os dados que tenho são uma tabela onde guardo o status dos pedidos e dentro 
dos pedidos tenho varios servicos, exemplo:

  pedido | codigo | status
  1234   |   01   |   I –> CONFERENCIA
  1234   |   02   |   N –> ENTREGUE
  1234   |   03   |   A –> AGENDAR
  1234   |   04   |   I –> CONFERENCIA
  1234   |   05   |   E –> EM ESPERA
  4321   |   01   |   N –> ENTREGUE
  4321   |   02   |   N –> ENTREGUE
  4321   |   03   |   N –> ENTREGUE

  Preciso trazer somente os pedidos que estão com o ultimo status todos = “N”,
  apesar do pedido 1234 ter um “N” ele não viria pois tem outros status nos 
outros servicos, 
  mas só o 4321 viria por estar totalmente “N” (ENTREGUE)


  Tentei algumas coisas aqui mas não cheguei ao resultado esperado

  Não sei se fui claro na explicação, espero que sim.
  Será que podem dar uma dica nesse select?
  Claro que não precisam me dar o select pronto, 
  mas só a uma dica de como formatar esse select,
  sabe quando a cabeça da um nó, rsrsrs


  Marcelo Silva
  --
  msn: marc...@ig.com.br
  Cel.: (11) 9693-4251
  Cel.: (11) 5250-1407
  Desenvolvedor Delphi, PHP, ASP
  Empresa: Perfil "Medicina e Segurança do Trabalho"

   

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral





___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Wagner Porto

Boa tarde !

Marcelo, de acordo  com o teu cenário
você pode buscar pela quantidade "CODIGO"
que possui o status "N"

total de linhas = total de linhas com status "N".

Acredito ser por ai teu caminho,

Mais um detalhe,
você não consegue incluir mais um inner join no teu segundo select ?

Ficaria + limpo

Boa sorte.

Em 17/05/2012 14:14, Marcelo Silva (IG) escreveu:

Pessoal, tenho o seguinte select:
select distinct
  a.pedido,
  a.status,
  b.descricao
from mv_servicos_status a
inner join mv_status b on(b.status = a.status)
where (a.data_bai + a.hora_bai) =
  (select max(data_bai + hora_bai)
   from mv_servicos_status
   where (pedido = a.pedido)
 and(codigo = a.codigo)
 and(a.pedido in(36663, 37228)))
order by a.pedido
Que me retorna as linhas:
36663 | I | CONFÊNCIA PEDIDO
36663 | N | ENTREGUE AO CLIENTE
37228 | N | ENTREGUE AO CLIENTE
Agora preciso de um select incorporado com o acima que me retorne 
somente os pedidos que tiverem somente 'N'
Ou seja o 36663 não entraria no resultado do segundo select por ter um 
status 'I' em sua lista
Não posso simplesmente colocar um and(status = 'N') porque o pedido 
vai mudando o status a cada instante

Explicando o cenário:
Os dados que tenho são uma tabela onde guardo o status dos pedidos e 
dentro dos pedidos tenho varios servicos, exemplo:

pedido | codigo | status
1234   |   01   |   I --> CONFERENCIA
1234   |   02   |   N --> ENTREGUE
1234   |   03   |   A --> AGENDAR
1234   |   04   |   I --> CONFERENCIA
1234   |   05   |   E --> EM ESPERA
4321   |   01   |   N --> ENTREGUE
4321   |   02   |   N --> ENTREGUE
4321   |   03   |   N --> ENTREGUE
Preciso trazer somente os pedidos que estão com o ultimo status todos 
= "N",
apesar do pedido 1234 ter um "N" ele não viria pois tem outros status 
nos outros servicos,

mas só o 4321 viria por estar totalmente "N" (ENTREGUE)
Tentei algumas coisas aqui mas não cheguei ao resultado esperado
Não sei se fui claro na explicação, espero que sim.
Será que podem dar uma dica nesse select?
Claro que não precisam me dar o select pronto,
mas só a uma dica de como formatar esse select,
sabe quando a cabeça da um nó, rsrsrs
Marcelo Silva
--
msn: marc...@ig.com.br
Cel.: (11) 9693-4251
Cel.: (11) 5250-1407
Desenvolvedor Delphi, PHP, ASP
Empresa: Perfil "Medicina e Segurança do Trabalho"


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Marcelo Silva (IG)
rsrsr, opa, Obrigado aí Flavio... estou tentando aqui com as ideias que 
estao me passando...
mas ainda não cheguei ao resultado que quero...
mas vou amadurecer a ideia...
agradeço muito a ajuda de voces...



-Mensagem Original- 
From: Flavio Henrique Araque Gurgel
Sent: Thursday, May 17, 2012 2:58 PM
To: pgbr-geral@listas.postgresql.org.br
Subject: Re: [pgbr-geral] Ajuda em Select


Em 17-05-2012 14:55, Marcelo Silva (IG) escreveu:
> Não posso me fixar em 'I' pois existem varios status

Pô cara, ajusta aí! Você pediu caminhos, lembra?
Segue uma diferente:

select
distinct a.pedido,
a.status,
b.descricao
from
mv_servicos_status a
inner join mv_status b on(b.status = a.status)
where
(a.data_bai + a.hora_bai) =
(select max(data_bai + hora_bai)
from
mv_servicos_status
where
(pedido = a.pedido) and(codigo = a.codigo) and(a.pedido in(36663,
37228)))
and
a.pedido not in (SELECT DISTINCT pedido FROM mv_servicos_status WHERE
status <> 'I')
order by
a.pedido

Vê se assim te atende. Mudou só a igualdade.
[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Osvaldo Kussama
Em 17/05/12, Marcelo Silva (IG) escreveu:
> Ainda nao deu
>
> Mas estou na luta aqui
>
> From: Edson neto
> Sent: Thursday, May 17, 2012 2:26 PM
> To: Marcelo Silva (IG) ; Comunidade PostgreSQL Brasileira
> Subject: Re: [pgbr-geral] Ajuda em Select
>
> Marcelo, acredito que utilizando um not exists resolveria seu problema
> with tmp as (select distinct
>   a.pedido,
>   a.status,
>   b.descricao
> from mv_servicos_status a
> inner join mv_status b on(b.status = a.status)
> where (a.data_bai + a.hora_bai) =
>   (select max(data_bai + hora_bai)
>from mv_servicos_status
>where (pedido = a.pedido)
>  and(codigo = a.codigo)
>  and(a.pedido in(36663, 37228)))
> order by a.pedido)
>
>
> select * from tmp t1 where t1.status='N' and not exists(select 1 from tmp t2
> where t1.pedido=t2.pedido and t2.status!='N');
>
>
>
>
>
> Em 17 de maio de 2012 14:14, Marcelo Silva (IG) 
> escreveu:
>
>   Pessoal, tenho o seguinte select:
>
>   select distinct
> a.pedido,
> a.status,
> b.descricao
>   from mv_servicos_status a
>   inner join mv_status b on(b.status = a.status)
>   where (a.data_bai + a.hora_bai) =
> (select max(data_bai + hora_bai)
>  from mv_servicos_status
>  where (pedido = a.pedido)
>and(codigo = a.codigo)
>and(a.pedido in(36663, 37228)))
>   order by a.pedido
>
>
>   Que me retorna as linhas:
>
>   36663 | I | CONFÊNCIA PEDIDO
>   36663 | N | ENTREGUE AO CLIENTE
>   37228 | N | ENTREGUE AO CLIENTE
>
>   Agora preciso de um select incorporado com o acima que me retorne somente
> os pedidos que tiverem somente ‘N’
>   Ou seja o 36663 não entraria no resultado do segundo select por ter um
> status ‘I’ em sua lista
>   Não posso simplesmente colocar um and(status = ‘N’) porque o pedido vai
> mudando o status a cada instante
>
>   Explicando o cenário:
>
>   Os dados que tenho são uma tabela onde guardo o status dos pedidos e
> dentro dos pedidos tenho varios servicos, exemplo:
>
>   pedido | codigo | status
>   1234   |   01   |   I –> CONFERENCIA
>   1234   |   02   |   N –> ENTREGUE
>   1234   |   03   |   A –> AGENDAR
>   1234   |   04   |   I –> CONFERENCIA
>   1234   |   05   |   E –> EM ESPERA
>   4321   |   01   |   N –> ENTREGUE
>   4321   |   02   |   N –> ENTREGUE
>   4321   |   03   |   N –> ENTREGUE
>
>   Preciso trazer somente os pedidos que estão com o ultimo status todos =
> “N”,
>   apesar do pedido 1234 ter um “N” ele não viria pois tem outros status nos
> outros servicos,
>   mas só o 4321 viria por estar totalmente “N” (ENTREGUE)
>
>
>   Tentei algumas coisas aqui mas não cheguei ao resultado esperado
>
>   Não sei se fui claro na explicação, espero que sim.
>   Será que podem dar uma dica nesse select?
>   Claro que não precisam me dar o select pronto,
>   mas só a uma dica de como formatar esse select,
>   sabe quando a cabeça da um nó, rsrsrs
>

Não consigo entender por que a solução do Edson não deu certo.
Talvez eu não tenha entendido o problema corretamente.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Flavio Henrique Araque Gurgel

Em 17-05-2012 15:02, Paulo Vitor Bettini de Albuqerque Lima escreveu:
> eu tentaria colocar um max(pedido), já que o que importa é o último
> status do pedido...

Acho que não, o que ele citou é que precisava extrair pedidos que não 
contivessem nada com 'N'.

[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Paulo Vitor Bettini de Albuqerque Lima
eu tentaria colocar um max(pedido), já que o que importa é o último status
do pedido...

Atenciosamente,
Paulo Vitor Bettini de Albuquerque Lima
http://about.me/paulolima



Em 17 de maio de 2012 14:55, Marcelo Silva (IG) escreveu:

> Não posso me fixar em 'I' pois existem varios status
>
>
> -Mensagem Original-
> From: Flavio Henrique Araque Gurgel
> Sent: Thursday, May 17, 2012 2:27 PM
> To: pgbr-geral@listas.postgresql.org.br
> Subject: Re: [pgbr-geral] Ajuda em Select
>
> Em 17-05-2012 14:14, Marcelo Silva (IG) escreveu:
> > Pessoal, tenho o seguinte select:
> > select distinct
> > a.pedido,
> > a.status,
> > b.descricao
> > from mv_servicos_status a
> > inner join mv_status b on(b.status = a.status)
> > where (a.data_bai + a.hora_bai) =
> > (select max(data_bai + hora_bai)
> > from mv_servicos_status
> > where (pedido = a.pedido)
> > and(codigo = a.codigo)
> > and(a.pedido in(36663, 37228)))
> > order by a.pedido
> > Que me retorna as linhas:
> > 36663 | I | CONFÊNCIA PEDIDO
> > 36663 | N | ENTREGUE AO CLIENTE
> > 37228 | N | ENTREGUE AO CLIENTE
> > Agora preciso de um select incorporado com o acima que me retorne
> > somente os pedidos que tiverem somente ‘N’
> > Ou seja o 36663 não entraria no resultado do segundo select por ter um
> > status ‘I’ em sua lista
>
> select
> distinct a.pedido,
> a.status,
> b.descricao
> from
> mv_servicos_status a
> inner join mv_status b on(b.status = a.status)
> where
> (a.data_bai + a.hora_bai) =
> (select max(data_bai + hora_bai)
> from
> mv_servicos_status
> where
> (pedido = a.pedido) and(codigo = a.codigo) and(a.pedido in(36663,
> 37228)))
> and
> a.pedido not in (SELECT DISTINCT pedido FROM mv_servicos_status WHERE
> status = 'I')
> order by
> a.pedido
> ;
>
> Não testei aqui mas assim deve trazer o que você quer.
> []s
>
> Flavio Henrique A. Gurgel
> Consultor e Instrutor 4Linux
> Tel: +55-11-2125-4747
> www.4linux.com.br
>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Flavio Henrique Araque Gurgel

Em 17-05-2012 14:55, Marcelo Silva (IG) escreveu:
> Não posso me fixar em 'I' pois existem varios status

Pô cara, ajusta aí! Você pediu caminhos, lembra?
Segue uma diferente:

select
distinct a.pedido,
a.status,
b.descricao
from
mv_servicos_status a
inner join mv_status b on(b.status = a.status)
where
(a.data_bai + a.hora_bai) =
(select max(data_bai + hora_bai)
from
mv_servicos_status
where
(pedido = a.pedido) and(codigo = a.codigo) and(a.pedido in(36663,
37228)))
and
a.pedido not in (SELECT DISTINCT pedido FROM mv_servicos_status WHERE
status <> 'I')
order by
a.pedido

Vê se assim te atende. Mudou só a igualdade.
[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Marcelo Silva (IG)
Não posso me fixar em 'I' pois existem varios status


-Mensagem Original- 
From: Flavio Henrique Araque Gurgel
Sent: Thursday, May 17, 2012 2:27 PM
To: pgbr-geral@listas.postgresql.org.br
Subject: Re: [pgbr-geral] Ajuda em Select

Em 17-05-2012 14:14, Marcelo Silva (IG) escreveu:
> Pessoal, tenho o seguinte select:
> select distinct
> a.pedido,
> a.status,
> b.descricao
> from mv_servicos_status a
> inner join mv_status b on(b.status = a.status)
> where (a.data_bai + a.hora_bai) =
> (select max(data_bai + hora_bai)
> from mv_servicos_status
> where (pedido = a.pedido)
> and(codigo = a.codigo)
> and(a.pedido in(36663, 37228)))
> order by a.pedido
> Que me retorna as linhas:
> 36663 | I | CONFÊNCIA PEDIDO
> 36663 | N | ENTREGUE AO CLIENTE
> 37228 | N | ENTREGUE AO CLIENTE
> Agora preciso de um select incorporado com o acima que me retorne
> somente os pedidos que tiverem somente ‘N’
> Ou seja o 36663 não entraria no resultado do segundo select por ter um
> status ‘I’ em sua lista

select
distinct a.pedido,
a.status,
b.descricao
from
mv_servicos_status a
inner join mv_status b on(b.status = a.status)
where
(a.data_bai + a.hora_bai) =
(select max(data_bai + hora_bai)
from
mv_servicos_status
where
(pedido = a.pedido) and(codigo = a.codigo) and(a.pedido in(36663,
37228)))
and
a.pedido not in (SELECT DISTINCT pedido FROM mv_servicos_status WHERE
status = 'I')
order by
a.pedido
;

Não testei aqui mas assim deve trazer o que você quer.
[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Marcelo Silva (IG)
Ainda nao deu 

Mas estou na luta aqui 

From: Edson neto 
Sent: Thursday, May 17, 2012 2:26 PM
To: Marcelo Silva (IG) ; Comunidade PostgreSQL Brasileira 
Subject: Re: [pgbr-geral] Ajuda em Select

Marcelo, acredito que utilizando um not exists resolveria seu problema 
with tmp as (select distinct 
  a.pedido,
  a.status,
  b.descricao
from mv_servicos_status a
inner join mv_status b on(b.status = a.status)
where (a.data_bai + a.hora_bai) =
  (select max(data_bai + hora_bai)
   from mv_servicos_status
   where (pedido = a.pedido)
 and(codigo = a.codigo)
 and(a.pedido in(36663, 37228)))
order by a.pedido)


select * from tmp t1 where t1.status='N' and not exists(select 1 from tmp t2 
where t1.pedido=t2.pedido and t2.status!='N');





Em 17 de maio de 2012 14:14, Marcelo Silva (IG)  escreveu:

  Pessoal, tenho o seguinte select:

  select distinct 
a.pedido,
a.status,
b.descricao
  from mv_servicos_status a 
  inner join mv_status b on(b.status = a.status) 
  where (a.data_bai + a.hora_bai) = 
(select max(data_bai + hora_bai) 
 from mv_servicos_status 
 where (pedido = a.pedido) 
   and(codigo = a.codigo) 
   and(a.pedido in(36663, 37228)))
  order by a.pedido


  Que me retorna as linhas:

  36663 | I | CONFÊNCIA PEDIDO
  36663 | N | ENTREGUE AO CLIENTE
  37228 | N | ENTREGUE AO CLIENTE

  Agora preciso de um select incorporado com o acima que me retorne somente os 
pedidos que tiverem somente ‘N’
  Ou seja o 36663 não entraria no resultado do segundo select por ter um status 
‘I’ em sua lista
  Não posso simplesmente colocar um and(status = ‘N’) porque o pedido vai 
mudando o status a cada instante

  Explicando o cenário:

  Os dados que tenho são uma tabela onde guardo o status dos pedidos e dentro 
dos pedidos tenho varios servicos, exemplo:

  pedido | codigo | status
  1234   |   01   |   I –> CONFERENCIA
  1234   |   02   |   N –> ENTREGUE
  1234   |   03   |   A –> AGENDAR
  1234   |   04   |   I –> CONFERENCIA
  1234   |   05   |   E –> EM ESPERA
  4321   |   01   |   N –> ENTREGUE
  4321   |   02   |   N –> ENTREGUE
  4321   |   03   |   N –> ENTREGUE

  Preciso trazer somente os pedidos que estão com o ultimo status todos = “N”,
  apesar do pedido 1234 ter um “N” ele não viria pois tem outros status nos 
outros servicos, 
  mas só o 4321 viria por estar totalmente “N” (ENTREGUE)


  Tentei algumas coisas aqui mas não cheguei ao resultado esperado

  Não sei se fui claro na explicação, espero que sim.
  Será que podem dar uma dica nesse select?
  Claro que não precisam me dar o select pronto, 
  mas só a uma dica de como formatar esse select,
  sabe quando a cabeça da um nó, rsrsrs


  Marcelo Silva
  --
  msn: marc...@ig.com.br
  Cel.: (11) 9693-4251
  Cel.: (11) 5250-1407
  Desenvolvedor Delphi, PHP, ASP
  Empresa: Perfil "Medicina e Segurança do Trabalho"

  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




wlEmoticon-smile[1].png
Description: Binary data
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Flavio Henrique Araque Gurgel
Em 17-05-2012 14:14, Marcelo Silva (IG) escreveu:
> Pessoal, tenho o seguinte select:
> select distinct
> a.pedido,
> a.status,
> b.descricao
> from mv_servicos_status a
> inner join mv_status b on(b.status = a.status)
> where (a.data_bai + a.hora_bai) =
> (select max(data_bai + hora_bai)
> from mv_servicos_status
> where (pedido = a.pedido)
> and(codigo = a.codigo)
> and(a.pedido in(36663, 37228)))
> order by a.pedido
> Que me retorna as linhas:
> 36663 | I | CONFÊNCIA PEDIDO
> 36663 | N | ENTREGUE AO CLIENTE
> 37228 | N | ENTREGUE AO CLIENTE
> Agora preciso de um select incorporado com o acima que me retorne
> somente os pedidos que tiverem somente ‘N’
> Ou seja o 36663 não entraria no resultado do segundo select por ter um
> status ‘I’ em sua lista

select
distinct a.pedido,
a.status,
b.descricao
from
mv_servicos_status a
inner join mv_status b on(b.status = a.status)
where
(a.data_bai + a.hora_bai) =
(select max(data_bai + hora_bai)
from
mv_servicos_status
where
(pedido = a.pedido) and(codigo = a.codigo) and(a.pedido 
in(36663, 
37228)))
and
a.pedido not in (SELECT DISTINCT pedido FROM 
mv_servicos_status WHERE 
status = 'I')
order by
a.pedido
;

Não testei aqui mas assim deve trazer o que você quer.
[]s

Flavio Henrique A. Gurgel
Consultor e Instrutor 4Linux
Tel: +55-11-2125-4747
www.4linux.com.br


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Edson neto
Marcelo, acredito que utilizando um not exists resolveria seu problema
with tmp as (select distinct
  a.pedido,
  a.status,
  b.descricao
from mv_servicos_status a
inner join mv_status b on(b.status = a.status)
where (a.data_bai + a.hora_bai) =
  (select max(data_bai + hora_bai)
   from mv_servicos_status
   where (pedido = a.pedido)
 and(codigo = a.codigo)
 and(a.pedido in(36663, 37228)))
order by a.pedido)

select * from tmp t1 where t1.status='N' and not exists(select 1 from tmp
t2 where t1.pedido=t2.pedido and t2.status!='N');



Em 17 de maio de 2012 14:14, Marcelo Silva (IG) escreveu:

>   Pessoal, tenho o seguinte select:
>
> select distinct
>   a.pedido,
>   a.status,
>   b.descricao
> from mv_servicos_status a
> inner join mv_status b on(b.status = a.status)
> where (a.data_bai + a.hora_bai) =
>   (select max(data_bai + hora_bai)
>from mv_servicos_status
>where (pedido = a.pedido)
>  and(codigo = a.codigo)
>  and(a.pedido in(36663, 37228)))
> order by a.pedido
>
>
> Que me retorna as linhas:
>
> 36663 | I | CONFÊNCIA PEDIDO
> 36663 | N | ENTREGUE AO CLIENTE
> 37228 | N | ENTREGUE AO CLIENTE
>
> Agora preciso de um select incorporado com o acima que me retorne somente
> os pedidos que tiverem somente ‘N’
> Ou seja o 36663 não entraria no resultado do segundo select por ter um
> status ‘I’ em sua lista
> Não posso simplesmente colocar um and(status = ‘N’) porque o pedido vai
> mudando o status a cada instante
>
> Explicando o cenário:
>
> Os dados que tenho são uma tabela onde guardo o status dos pedidos e
> dentro dos pedidos tenho varios servicos, exemplo:
>
> pedido | codigo | status
> 1234   |   01   |   I –> CONFERENCIA
> 1234   |   02   |   N –> ENTREGUE
> 1234   |   03   |   A –> AGENDAR
> 1234   |   04   |   I –> CONFERENCIA
> 1234   |   05   |   E –> EM ESPERA
> 4321   |   01   |   N –> ENTREGUE
> 4321   |   02   |   N –> ENTREGUE
> 4321   |   03   |   N –> ENTREGUE
>
> Preciso trazer somente os pedidos que estão com o ultimo status todos =
> “N”,
> apesar do pedido 1234 ter um “N” ele não viria pois tem outros status nos
> outros servicos,
> mas só o 4321 viria por estar totalmente “N” (ENTREGUE)
>
>
> Tentei algumas coisas aqui mas não cheguei ao resultado esperado
>
> Não sei se fui claro na explicação, espero que sim.
> Será que podem dar uma dica nesse select?
> Claro que não precisam me dar o select pronto,
> mas só a uma dica de como formatar esse select,
> sabe quando a cabeça da um nó, rsrsrs
>
>
> Marcelo Silva
> --
> msn: marc...@ig.com.br
> Cel.: (11) 9693-4251
> Cel.: (11) 5250-1407
> Desenvolvedor Delphi, PHP, ASP
> Empresa: Perfil "Medicina e Segurança do Trabalho"
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Ajuda em Select

2012-05-17 Por tôpico Marcelo Silva (IG)
Pessoal, tenho o seguinte select:

select distinct 
  a.pedido,
  a.status,
  b.descricao
from mv_servicos_status a 
inner join mv_status b on(b.status = a.status) 
where (a.data_bai + a.hora_bai) = 
  (select max(data_bai + hora_bai) 
   from mv_servicos_status 
   where (pedido = a.pedido) 
 and(codigo = a.codigo) 
 and(a.pedido in(36663, 37228)))
order by a.pedido


Que me retorna as linhas:

36663 | I | CONFÊNCIA PEDIDO
36663 | N | ENTREGUE AO CLIENTE
37228 | N | ENTREGUE AO CLIENTE

Agora preciso de um select incorporado com o acima que me retorne somente os 
pedidos que tiverem somente ‘N’
Ou seja o 36663 não entraria no resultado do segundo select por ter um status 
‘I’ em sua lista
Não posso simplesmente colocar um and(status = ‘N’) porque o pedido vai mudando 
o status a cada instante

Explicando o cenário:

Os dados que tenho são uma tabela onde guardo o status dos pedidos e dentro dos 
pedidos tenho varios servicos, exemplo:

pedido | codigo | status
1234   |   01   |   I –> CONFERENCIA
1234   |   02   |   N –> ENTREGUE
1234   |   03   |   A –> AGENDAR
1234   |   04   |   I –> CONFERENCIA
1234   |   05   |   E –> EM ESPERA
4321   |   01   |   N –> ENTREGUE
4321   |   02   |   N –> ENTREGUE
4321   |   03   |   N –> ENTREGUE

Preciso trazer somente os pedidos que estão com o ultimo status todos = “N”,
apesar do pedido 1234 ter um “N” ele não viria pois tem outros status nos 
outros servicos, 
mas só o 4321 viria por estar totalmente “N” (ENTREGUE)


Tentei algumas coisas aqui mas não cheguei ao resultado esperado

Não sei se fui claro na explicação, espero que sim.
Será que podem dar uma dica nesse select?
Claro que não precisam me dar o select pronto, 
mas só a uma dica de como formatar esse select,
sabe quando a cabeça da um nó, rsrsrs


Marcelo Silva
--
msn: marc...@ig.com.br
Cel.: (11) 9693-4251
Cel.: (11) 5250-1407
Desenvolvedor Delphi, PHP, ASP
Empresa: Perfil "Medicina e Segurança do Trabalho"___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Ajuda em Select

2008-05-21 Por tôpico Leandro DUTRA
2008/5/21 Saulo Morais Lara <[EMAIL PROTECTED]>:
> Preciso fazer uma consulta pela freqüência de compras (em dias), de cada
> cliente.
>
> De qto em qto tempo ele costuma comprar.
>
> Alguem pode me dar o caminho das pedras?

Como estão organizados os dados?

Enquanto isso, sugiro o livro do Date…

-- 
skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803
+55 (11) 5685 2219 MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


[pgbr-geral] Ajuda em Select

2008-05-21 Por tôpico Saulo Morais Lara
Preciso fazer uma consulta pela freqüência de compras (em dias), de cada
cliente.

De qto em qto tempo ele costuma comprar.

Alguem pode me dar o caminho das pedras?

Obrigado

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral