¿Q esta mal? Consulta SIMPLE me desespera... (es viernes, sigh)

06/02/2004 - 10:06 por Miguel Tubia | Informe spam
Hola,
menudo viernes, tengo una consulta de lo más simple q me está desesperando
pues no hace lo q quiero
Tengo dos tablas: concepfa1 y clitemporal. Cada tabla, entre otros, tiene
campo cliente (como identificador y PK) y concepto. En concepf1 tengo todos
los clientes cada uno puede tener varios conceptos, cada cliente tendrá una
fila por cada concepto. En clitemporal tengo algunos clientes y algunos
conceptos. Bien, quiero coger de concepfa1 todos los clientes que existan en
clitemporal pero q en concepfa1 exista algun concepto que ese cliente no
tenga en clitemporal.
No parece dificil... hago lo siguiente:

select c.cliente, c.concepto
from clitemporal t inner join concepfa1 c on c.cliente=t.cliente and
c.concepto != t.concepto

Así cojo de concepfa1 el cliente y el concepto, donde el cliente sea el
mismo (existe en clitemporal) pero concepto no es el mismo (ese concepto no
está en clitemporal). Bien, la hago y en algunos (solo algunos...) clientes
me saca tanto los conceptos que están en clitemporal y los q no están.
¿pq?!?!?!?
Espero haber explicado la consulta. Si alguien sabe como hacerlo, por favor
q me una consulta!!!! Con lo contento q esraba yo esta mañana antes de
entrar a trabajar en fin, mañana es sabado XD
Muchas gracias
Un saludo
 

Leer las respuestas

#1 Eladio Rincón
06/02/2004 - 10:24 | Informe spam
Hola Miguel,

sería útil que adjuntaras script de las tablas y algunos datos para probar; mira a ver si este ejemplo te devuelve lo que necesitas:

create table clitemporal
( idConcepto int, idCliente int, descr varchar(100), constraint pkCliTemp primary key( idConcepto, idCliente) )
go
create table concepfa1
( idConcepto int, idCliente int, descr varchar(100), constraint pkCli2Temp primary key( idConcepto, idCliente) )
go

insert into clitemporal select 1, 1, 'descr 1 cli1'
insert into clitemporal select 2, 1, 'descr 2 cli1'
insert into clitemporal select 1, 2, 'descr 1 cli2'
insert into clitemporal select 1, 3, 'descr 1 cli3'

insert into concepfa1 select 1, 1, 'descr 1 cli1'
insert into concepfa1 select 2, 1, 'descr 2 cli1'
insert into concepfa1 select 1, 2, 'descr 1 cli2'
insert into concepfa1 select 1, 3, 'descr 1 cli3'

insert into concepfa1 select 3, 1, 'descr 3 cli1'
insert into concepfa1 select 2, 2, 'descr 2 cli3'
insert into concepfa1 select 2, 3, 'descr 2 cli3'

select c1.* from concepfa1 c1
left join clitemporal c2 on c1.idCliente = c2.idCliente and c1.idConcepto = c2.idConcepto
where c2.idCliente is null and c2.idConcepto is null



Eladio Rincón
MCAD, SQL Server MVP
http://www.siquelnet.com

"Comparte lo que sabes, aprende lo que no sepas." FGG

"Miguel Tubia" <####m_tubiaARROBAhotmail.com###> escribió en el mensaje news:
Hola,
menudo viernes, tengo una consulta de lo más simple q me está desesperando
pues no hace lo q quiero
Tengo dos tablas: concepfa1 y clitemporal. Cada tabla, entre otros, tiene
campo cliente (como identificador y PK) y concepto. En concepf1 tengo todos
los clientes cada uno puede tener varios conceptos, cada cliente tendrá una
fila por cada concepto. En clitemporal tengo algunos clientes y algunos
conceptos. Bien, quiero coger de concepfa1 todos los clientes que existan en
clitemporal pero q en concepfa1 exista algun concepto que ese cliente no
tenga en clitemporal.
No parece dificil... hago lo siguiente:

select c.cliente, c.concepto
from clitemporal t inner join concepfa1 c on c.cliente=t.cliente and
c.concepto != t.concepto

Así cojo de concepfa1 el cliente y el concepto, donde el cliente sea el
mismo (existe en clitemporal) pero concepto no es el mismo (ese concepto no
está en clitemporal). Bien, la hago y en algunos (solo algunos...) clientes
me saca tanto los conceptos que están en clitemporal y los q no están.
¿pq?!?!?!?
Espero haber explicado la consulta. Si alguien sabe como hacerlo, por favor
q me una consulta!!!! Con lo contento q esraba yo esta mañana antes de
entrar a trabajar en fin, mañana es sabado XD
Muchas gracias
Un saludo


Preguntas similares