Array
(
)

Montar consulta SQL

Danielgatis
   - 19 ago 2004

O negoço he o seguinte tenho 2 tabelas:
CONTRATO([u:455bc7cbe2]cd_contrato,cd_controle[/u:455bc7cbe2])
PARCELA([u:455bc7cbe2]cd_parcela[/u:455bc7cbe2],cd_contrato,cd_controle,ch_tipo,dt_pagto)

exemplos dos dados:

contrato

cd_contrato --- cd_controle
-------------------------------
1 ------------------ 1
2 ------------------ 1
3 ------------------ 1
4 ------------------ 1
5 ------------------ 1
--------------------------------

parcela

cd_parcela ---- cd_contrato ---- cd_controle - ch_tipo --- dt_pagto
---------------------------------------------------------------------------------
1 ------------------ 1 --------------- 1 ------------- A -------- 19/08/04
2 ------------------ 1 --------------- 1 ------------- S -------- 19/08/04
3 ------------------ 1 --------------- 1 ------------- C -------- null
4 ------------------ 2 --------------- 1 ------------- S -------- 19/08/04
5 ------------------ 2 --------------- 1 ------------- A -------- 19/08/04
6 ------------------ 3 --------------- 1 ------------- S -------- 19/08/04
7 ------------------ 4 --------------- 1 ------------- A -------- 19/08/04
8 ------------------ 5 --------------- 1 ------------- A -------- null
9 ------------------ 5 --------------- 1 ------------- S -------- 19/08/04
---------------------------------------------------------------------------------

he o seguinte no meu programa no delphi tem um form com 3 checkbox:

SELECIONAR CONTRATOS COM AS SEGUINTES PARCELAS PAGAS:

.x. parcela A
.x. parcela S
... parcela C

<CONSULTAR> <FECHAR>


pronto ai he o seguinte
se eu marcar as parcelas A e S a consulta tem que me retornar

o contrato 1 pq tem as parcelas A e S pagas (data <> null)
o contrato 2 pq tem as parcelas A e S pagas
o contrato 3 pq tem a parcela S paga e n tem parcela A para ele
o contrato 4 pq tem a parcela A paga e n tem parcela S para ele

do mermo jeito eu poderia escolher as 3 parcelas ou A e C ou qualquer outra combinação.

estou usando o interbase 1.0.0.326

se algume pude me ajudar com o select pra isso ai eu agradeço :D[/img]



Título editado: ´Pelo amor de deus algume me ajuda a fazer essa consulta SQL
danielgatis,
Escreva seu título com uma pequena descrição de seu problema. Por favor, leia as [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=6689]Regras de Conduta[/url].

Sandra/Moderação


Paullus
   - 19 ago 2004

#Código

SELECT cd_contrato
FROM PARCELA
WHERE (((ch_tipo = ´A´) AND
(dt_pagto IS NOT NULL)) AND
((ch_tipo = ´S´) AND
(dt_pagto IS NOT NULL)))


Esse select aí deve trazer os que têm a parcela A e S pagas. Agora so falta você adicionar os que tem somente um tipo de parcela e esta parcela está paga. Acho que já dá uma ajuda... :roll:


Danielgatis
   - 19 ago 2004

#Código


SELECT * FROM CONTRATOS C WHERE
C.CD_CONTRATO IN (
SELECT DISTINCT(P.CD_CONTRATO) FROM
PARCELA P WHERE
C.CD_CONTRATO = P.CD_CONTRATO AND
C.CD_CONTROLE = P.CD_CONTROLE AND
P.TIPO = ´A´ AND P.DT_PAGTO IS NOT NULL
)
AND
C.CD_CONTRATO IN (
SELECT DISTINCT(P.CD_CONTRATO) FROM
PARCELA P WHERE
C.CD_CONTRATO = P.CD_CONTRATO AND
C.CD_CONTROLE = P.CD_CONTROLE AND
P.TIPO = ´S´ AND P.DT_PAGTO IS NOT NULL
)


eu preciso dos dados que estão na tabela de contratos logo eu teria que relacionar as 2 tabelas. a primeira condição é que o contrato tenha as parcelas S e A pagas eu consigo fazer as outras condições n tenho a minima ideia de como fazer ... sera q alguem pode ajudar?