Duvida para fazer um sql!

3 respostas
S

Ae pessoal, estou com a seguinte duvida

No meu banco (postgresql) tenho que fazer uma busca por pedidos(titulos) em atrasos onde o meu retorno seja os dados apenas do meu pedido mais antigo por cliente.

por ex.:

minha tabela pedido vai ter:
idPedido,idCliente,valor,juros,vencimento…

entao preciso fazer um SELECT que me retorne os pedidos em atraso do Cliente Seu Ze, mas se por acaso o meses em atraso(vencimento) de seu ze forem (01/06 , 02/06, 03/06, 04/06) ele me retorne os dados do mês de janeiro (por se o mais antigo); e me diga quantos estao em atraso, no caso 4 pedidos(titulos);

retorno seria tipo:
pedido no X
cliente Seu Ze
valor 50,00
juros 2,00
vencimento 10/01/06
4 pedidos em atraso

alguem pode me ajudar com isso ae ?
fazer com que ele traga o mais antigo mais mesmo assim conte a quantidade, to com a cabeca a mil hj, sei que vai ser simples…

3 Respostas

H

Ponha a sua verificação de atraso “where” dentro de um COUNT.

Dessa forma, ele vai contar quantos pedidos (meses) estão em atraso.
Foi o que eu consegui entender da sua pergunta…

A sintaxe é mais ou menos assim:

SELECT COUNT(o q vc quer contar)
FROM SuaTabela WHERE SuaCláusulaDeBusca

Avisa se for issoe se der certo!

H

Relmente precisa ser em uma unica query ???

Vai aí uma solução bem simples… Faça dois selec um para retornar o mais antigo e um para retornar a quantidade.

Ex: Select xxx, yyy, data from sua_tabela where xxx = … and data >= all(select data from sua_tabela where xxx = …)

E depois um select count from sua_tabela where …

Coisas complexas a maioria das vezes exigem solucões simples… Isso resolve seu problema, mas caso queira dar uma complicada e trabalhar um dia inteiro nisso vc pode ciar uma procedure e usar tabelas temporarias talvez cursores… vai dar um p… trampo

S

na verdade eu vou ter que fazer alguns LEFT JOINs o que eu queria mesmo era o caminho das pedras ja que eu estava com a cabeca bastante atarefada!

vlw vou fazer aqui do melhor jeito e digo a vcs depois.

Criado 4 de maio de 2006
Ultima resposta 4 de mai. de 2006
Respostas 3
Participantes 3