¿QUIENES SOMOS?
MS-SQL Server
Características
La mejor Base de Datos
DESARROLLOS CON SQL
Utilitario ESQL
Tutorial de ASP
Seguridad en IIS
ARTICULOS VARIOS
Buscar txt en los SP
Asegurar los Datos
Ajuste RDBMS
Reporting Services
Funciones en SQL
Optimización de SQL
Administración MMC
Transformación DTS
Config. de memoria
Data WareHouse
Procedimientos no documentados
ADMINISTRACION
Configuración de SQL
Utilitarios de Administración
RECURSOS
Listas de Correo
Foro de SQL
Foro de ASP
Foro de DW
Codigos de Ejemplo
|
FORO DE SQL
Registros que no se tienen en cuenta en una consulta SQL
De: Gary
email: garyto@hotmail.com Fecha: 5/28/2010
Comentario: Hola a todos!!
A ver si me podéis ayudar porque me esta sucediendo una cosa de lo más extraña y para la que no tengo explicación.
Os explico el tema: Mi objetivo era realizar una consulta SQL para rellenar con su resultado un DataGrid y, dado que no soy ningún experto en SQL, preparé unos registros de prueba para comprobar que la consulta funcionaba correctamente.
En la consulta trabajo con dos tablas las cuales tienen un campo fecha. Mi consulta recibe como parametro una fecha que introduce el usuario. Necesito que la consulta devuelva los registros en los que la fecha coincide con la primera tabla, pero que la fecha de la segunda tabla no coincida con la fecha introducida por el usuario, siempre que los registros sean del mismo socio.
Ejemplo:
El socio1 tiene un registro en la tabla1 con fecha 1/1/10 y otro registro en la tabla2 con la misma fecha.
El socio2 tiene un registro en la tabla1 con fecha 1/1/10 y otro registro en la tabla2 con la fecha 30/1/10.
El socio3 tiene un registro en la tabla1 con fecha 15/10/09 y otro registro en la tabla2 con la fecha 1/1/10.
Si el usuario introduce como parametro la fecha 1/1/10 me deberia devolver solo el registro del socio2, ya que este es el único que coincide la fecha introducida por el usuario con la fecha del registro de la tabla1 y no tiene un registro con la misma fecha en la tabla2. Por esta misma razón el socio1 no aparecería, ya que este tiene un registro con la misma fecha en la tabla2 y el socio3 tampoco ya que la fecha de la tabla1 no coincide con la introducida como parametro.
A continuación expongo como he planteado la consulta:
SELECT DISTINCT HISTORIAL_ALQ.num_socio AS [N Socio], HISTORIAL_ALQ.fecha_devolucion AS [Fecha Devolucion], HISTORIAL_ALQ.num_parte AS [N Parte], HISTORIAL_ALQ.cantidad_servida AS Cantidad, HISTORIAL_ALQ.cod_ropa AS [Cod Ropa], HISTORIAL_ALQ.quien_dev AS [Quien devuelve?], HISTORIAL_ALQ.notas AS Notas, HISTORIAL_ALQ.num_socio AS Socio FROM (HISTORIAL_ALQ INNER JOIN HISTORIAL_LLV ON HISTORIAL_ALQ.num_socio = HISTORIAL_LLV.num_socio) WHERE (HISTORIAL_ALQ.fecha_devolucion = #"
& fecha & "#) AND (HISTORIAL_ALQ.num_socio NOT IN (SELECT num_socio FROM HISTORIAL_LLV HISTORIAL_LLV_1 WHERE (fecha_devolucion = #" & fecha & "#)))"
Tras varias pruebas consegui la sentencia SQL citada y tras los test con los registros de prueba que habia preparado veo que funciona correctamente.
Cual es mi sorpresa al continuar introduciendo registros para hacer más tests y descubro que la consulta solo funciona con los registros que tenía previamente pero no con los nuevos q introduzco, es como si los ignorará...
He probado con una copia de la BD en blanco y tampoco funciona con los registros q introduzco pero, por el contrario si copio y pego los antiguos registros de la anterior BD en la nueva si funciona correctamente.
Estoy trabajando con una BD de Access.
Espero haberme explicado con claridad y encontrar a alguien que sepa como solucionar esto porque para mi es un misterio.
Gracias por adelantado, un saludo!!
Registros que no se tienen en cuenta en una consulta SQL Rommel 5/28/2010 A ver prueba con el siguiente formato... si te funciona, trato de entender, creo que serias ma claro si haces datos de ejemplo, con cuadros. y el resultado que necesitas. Saludos
Select *
from tabla1 a1
inner join tabla2 a2 On a2.Socio = a1.Socio
where a1.Fecha = @Fecha
and a2.Fecha <> @Fecha |
Volver al Foro
RESPONDER:
Volver al Foro
|
|