SELECT E SUBSELECT COM2 CAMPOS

FUTURA 25/11/2009 10:57:17
#328546
preciso verificar clientes que não tem movto no periodo, porém como a empresa é uma transportadora o cliente pode ser remetente ou destinatario, ai o subselect preciso checar 2 campos, tem jeito ? com um campo só fiz assim:

seleciono de cliente, onde a cidade é igual a escolhida e o cliente não esteja no remetente da tabela cto, vai normal:

SQL = [Ô] select cl_cod from clientes where cl_cid = [ô][Ô] & cmbcid.Text & [Ô][ô] and cl_cod not in ( select remetente from cto where data between [Ô] & FormataData(dti.value, dbtype) & [Ô] and [Ô] & FormataData(dtf.value, dbtype) & [Ô]) [Ô]

preciso resolver como colocar 2 campos no sub select ( remetente destinatario),,,tem jeito ???
NETMANIA 25/11/2009 11:09:58
#328547
No sub-select você só pode retornar um único valor. QUando eu tenho este tipo de problema (que preciso voltar mais de um dado no sub-select), rodo duas consultas distintas para trabalhar com os dados.
FUTURA 25/11/2009 11:24:28
#328548
entendi, é q neste caso, o cliente pode ser um dos 2, então a saida seria uma tabela temp para gravar a primeira consulta, e na segunda fazer uma analise....
EDERMIR 25/11/2009 13:30:38
#328550
Resposta escolhida
SQL = [Ô] select cl_cod from clientes where cl_cid = [ô][Ô] & cmbcid.Text & [Ô][ô] and (cl_cod not in ( select remetente from cto where data between [Ô] & FormataData(dti.value, dbtype) & [Ô] and [Ô] & FormataData(dtf.value, dbtype) & [Ô]) and cl_cod not in ( select destinatario from cto where data between [Ô] & FormataData(dti.value, dbtype) & [Ô] and [Ô] & FormataData(dtf.value, dbtype) & [Ô]))[Ô]


Resolve?
FUTURA 25/11/2009 13:47:55
#328551
o loco hein ???/ se resolve ???? valeu...
RCMRO 25/11/2009 13:51:33
#328552
Futura,

Acredito que seja um select como o abaixo:

SELECT      cli.cl_cod 
FROM clientes cli
LEFT JOIN remetente rem
ON rem.cl_cod = cli.cl_cod
LEFT JOIN destinatario des
ON des.cl_cod = cli.cl_cod
WHERE cl_cid = [ô][Ô] & cmbcid.Text & [Ô][ô]
AND cli.data BETWEEN [ô][Ô] & FormataData(dti.value, dbtype) & [Ô][ô] AND [ô][Ô] & FormataData(dtf.value, dbtype) & [Ô][ô][Ô]
AND rem.cl_cod IS NULL
AND des.cl_cod IS NULL

Só não coloquei os parenteses que o ACCESS requer por não saber se você está usando ACCESS ou um outro banco melhor. Se não for ACCESS, é só mandar assim.
Se for ACCESS, troca as entradas de valores do VB por valores fixos e copia no ACCESS e vê como fica os parenteses...

Se resolveu o seu problema, fecha o tópico e pontua. Se não resolvei, manda mais informações do que acontece e a gente tenta te ajudar.

Abraços,
Tópico encerrado , respostas não são mais permitidas