EXCEPT en SQL-Access

Estoy empezando con el SQL y mis primeras consultas las estoy realizando sobre una base de datos creada con el Microsoft Access ¿alguien podría decirme como puedo expresar la sentencia MINUS (oracle) o EXCEPT (sql) dentro del SQL del Microsoft Access?
Quiero ejecutar la siguiente consulta dentro de SQL-Access, pero no se como puedo hacerlo. Por supuesto que el Minus no me deja porque no lo admite, lo que pasa es que lo he puesto para que veáis que quiero hacer, que es seleccionar todas las fechas diferentes a cero pero verificando que no existe una fecha igual a cero (vigente). Porque lo que quiero hacer es encontrar asignaciones que actualmente no están activas, es decir, que la fecha_fin es diferente a cero y mi idea es seleccionar todas las que sean <> 0 pero restando aquellas que sean = 0.
SELECT *
FROM Asignaciones a
WHERE a.fecha_fin <> '0'
MINUS
SELECT *
FROM Asignaciones a1
WHERE a1.fecha_fin = '0';
He probado con esto, pero no me devuelve ningún registro. No se si es correcto o no.
SELECT *
FROM Asignaciones a
WHERE a.fecha_fin <> '0'
AND NOT EXISTS(SELECT *
FROM Asignaciones a1
WHERE a1.fecha_fin = '0');

3 Respuestas

Respuesta
2
Que yo me acuerde no se utilizan datos en cero en fechas, se utilizan null's o nulos. Cambia los ceros por nulos y me dices como te fue.
Hola David, gracias por tu ayuda. Pero quizá el ejemplo que puse no fue el más adecuado. En realidad mi duda consiste en que quiero encontrar una función que reste a una consulta el resultado de otra, igual que el MINUS en SQL-plus. POr eso puse ese ejemplo, pero no por las fechas sino por el Minus. En realidad podría haber puesto un ejemplo más fácil como por ejemplo seleccioname todas las frutas de un huerto y ahora quítame (que es lo que no se como hacer) todas las manzanas.
A ver si me puedes echar una mano.
Un saludo David
Gracias
Emmanuel
Perfecto, que te parece si haces un select al cual le indiques que traiga los datos que no están en otro select, algo como:
select misdatos from mitabla where miclave not in (select miclave from mitabla where miclave = manzana)
Respuesta
1
Bueno no entiendo el propósito de tu consulta, pero intentalo así:
SELECT *
FROM Asignaciones
WHERE fecha_fin <> '0'
and fecha_fin not in
(SELECT *
FROM Asignaciones
WHERE fecha_fin = '0')
Respuesta
1
Creo que no planteas bien tu pregunta o no te entiendo bien, la Select que envías no devolverá nada siempre que haya algún registro que cumpla fecha_fin='0', además, ¿qué es eso de '0'?, supongo que fecha_fin es una fecha y tú la estás comparando con una cadena, a no ser que la tengas definida como cadena ¡?!, en cualquier caso, aclara más tu pregunta y seguro que puedo ayudarte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas