SELECT E SUBSELECT COM2 CAMPOS
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 ???
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 ???
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.
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....
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?
o loco hein ???/ se resolve ???? valeu...
Futura,
Acredito que seja um select como o abaixo:
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,
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