Delphi - SQL. comparacion datos no existentes

 
Vista:

SQL. comparacion datos no existentes

Publicado por Arturo (1 intervención) el 30/09/2002 15:41:10
Como puedo hacer un SELECT ... WHERE datos comparados no en tabla de comparacion.
Ejemplo:
SELECT *
FROM Estudiantes JOIN PAGOS...
WHERE Pagos.mes = 'Octubre' AND Estudiantes.Codigo no este en Pagos para el mes de Octubre.
** La Idea es crear un listado en el que se muestren todos los estudiantes que no hayan pagado el mes de octubre. **
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:SQL. comparacion datos no existentes

Publicado por joselito (177 intervenciones) el 30/09/2002 18:28:34
Hola... Sí que se puede... Eso se hace con un OUTER JOIN... El Outer Join, imaginate 2 conjuntos solapados, te devuelve todos los registros que no son comunes a ambos...
Existe también un INNER JOIN, que devuelve todo lo contrario, los comunes a ambos... Mirate esa sentencia.
Un saludo. JOSE.
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:SQL. comparacion datos no existentes

Publicado por Victor (85 intervenciones) el 01/10/2002 14:26:01
Si en tu tabla de Pagos tenes un campo que indique el estudiante, podes usar NOT IN.
Sería algo así:

SELECT * FROM Estudiantes WHERE codigo NOT IN
(SELECT codigo_estudiante FROM Pagos where mes = 'Octubre')

Para poder hacer esto tu manejador de Base de datos debe soportar subquery, de lo contrario tenes que hacerlo con OUTER JOIN como te mensiona joselito
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:SQL. comparacion datos no existentes

Publicado por marco (16 intervenciones) el 04/10/2002 05:29:59
Te presento dos opciones:
1.- select * Estudiantes
where not exists( select pagos.mes
from pagos

where pagos.mes='Octubre' and
Pagos.EstudianteCodigo=
Estudiantes.Codigo)
nota: En esta consulta se revisarán todas las filas de pagos por cada fila de estudiantes.

2.- Select * from estudiantes
LEFT OUTER JOIN pagos
Where pagos.mes='octubre' and
Estudiantes.codigo=Pagos.CodigoEstudiante' and
Pagos.CodigoEstudiante is null
¿Te sirve?
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