SQL - Problema con consulta SQL

   
Vista:

Problema con consulta SQL

Publicado por Gary (6 intervenciones) el 24/04/2010 20:26:41
Hola a todos!!

Estoy trabajando con VS 2005, concretamente VB.NET y el problema que tengo es q al ejecutar una consulta SQL para rellenar un DGV no obtengo el resultado deseado.

Mi intenciuón es que la consulta compare los datos de dos tablas y que si un socio tiene un registro en las dos tablas con la misma fecha ese registro no aparezca en los resultado de la consulta, es decir, solo deben aparecer los registros que solo tengan, en la fecha introducida por el usuario, registro en una tabla. Si lo tienen en ambas no debe apareceren el resultado de la consulta SQL.

Aqui esta la consulta:

SELECT HISTORIAL_LLV.num_socio, HISTORIAL_ALQ.num_parte, HISTORIAL_ALQ.fecha_entrega, HISTORIAL_ALQ.entrega, HISTORIAL_ALQ.fecha_devolucion,
HISTORIAL_ALQ.devolución, HISTORIAL_ALQ.cantidad_servida, HISTORIAL_ALQ.cod_ropa, PACKS.descripción, HISTORIAL_ALQ.notas
FROM ((PACKS INNER JOIN
HISTORIAL_ALQ ON PACKS.cod_ropa = HISTORIAL_ALQ.cod_ropa) INNER JOIN
HISTORIAL_LLV ON HISTORIAL_ALQ.num_socio = HISTORIAL_LLV.num_socio)
WHERE (HISTORIAL_ALQ.fecha_devolucion = #3/15/2010#) AND (HISTORIAL_LLV.fecha_devolucion <> #3/15/2010#)

Espero haberme explicado bien...

por si sirve de pista diré que el problema reside en que me aparece un registro duplicado, aunque, si no fuera así, la consulta funcionaría bien.

Gracias por adelantado!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con consulta SQL

Publicado por Leandro (1 intervención) el 24/04/2010 23:08:13
No entiendo si quieres que la tupla resultado tenga solo una fecha e igual al
dato o quieres que tenga las dos fechas y que estas sean distintas entre si y
una de ellas igual al dato

Para que el resultado tenga solo una fecha y que sea igual al q te ingresaron
yo haria:

SELECT ...
FROM tabla1 t1, tabla2 t2
WHERE (t1.fecha1 = dato AND t2.fecha_2 is null )
OR ( (t2.fecha2 = dato AND t1.fecha_1 is null ) )

Para que el resultado tenga las dos fechas y que estas sean distintas entre si y
una de ellas igual al dato yo haria:

SELECT ...
FROM tabla1 t1, tabla2 t2
WHERE (t1.fecha1 = dato AND t2.fecha_2 <> dato )
OR ( (t2.fecha2 = dato AND t1.fecha_1 <> dato ) )

Saludos
Leandro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con consulta SQL

Publicado por Gary (6 intervenciones) el 10/05/2010 19:15:40
Hola Leandro:

He probado lo que me proponias y no da resultado. Pero he continuado investigando y he avanzado algo. He creado otro post con los avances. Si te interesa puedes revisarlo aqui:

http://www.lawebdelprogramador.com/news/mostrar_new.php?id=89&texto=SQL&n1=560740&n2=0&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0

Gracias y un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con consulta SQL

Publicado por Leonardo Josue (880 intervenciones) el 26/04/2010 18:07:57
El que te muestre un registro duplicado puedes ser por los INNER JOIN que tienes especificados, puede ser que te falte algún criterio para conciderar... Puedes hacer lo siguiente:

SELECT *
FROM ((PACKS INNER JOIN
HISTORIAL_ALQ ON PACKS.cod_ropa = HISTORIAL_ALQ.cod_ropa) INNER JOIN
HISTORIAL_LLV ON HISTORIAL_ALQ.num_socio = HISTORIAL_LLV.num_socio)
WHERE (HISTORIAL_ALQ.fecha_devolucion = #3/15/2010#) AND (HISTORIAL_LLV.fecha_devolucion <> #3/15/2010#)

Esto de devolverá todos los campos de todas las tablas que se manejan en el select. Revisa los registros que concideras que se están duplicando para que verifiques si algun campo que no concideraste en tu select inicial es diferente.

Saludos.

Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar