Select con left outer join che non funziona

martedì 14 ottobre 2014 - 11.28
Tag Elenco Tags  Windows Server 2008 R2

paolagumi Profilo | Junior Member

Buongiorno a tutti,
in un db sql server 2008 r2, ho queste due tabelle :
Domande, con colonne: Matricola, DataInizio, DataFine
Iscrizioni, con colonne: Matricola, Data

Sembrerà banale ma...
vorrei estrarre tutte le matricole che per una certa data hanno domanda valida (sulla prima tabella) ma non hanno una iscrizione (sulla seconda tabella).

Ho fatto così:

declare @Data date
set @Data = CAST('2014-10-16' as date)

select Domande.Matricola from Domande
left outer join Iscrizioni on
Domande.Matricola = Iscrizioni.Matricola
where Iscrizioni.Matricola is null and
Domande.DataInizio <=@Data and
Domande.DataFine >=@Data and
Iscrizioni.Data = @Data
order by Domande.Matricola

Non estrae nulla....e non va bene. Dove sbaglio?
Grazie a tutti e buona giornata,
Paola

HolidaySoft.it Profilo | Junior Member

Ciao,
prova così:

SELECT * FROM DOMANDE A LEFT OUTER JOIN (SELECT * FROM ISCRIZIONI WHERE ISCRIZIONI.DATA = @Data) ON DOMANDE.MATRICOLA = ISCRIZIONI.MATRICOLA
WHERE @Data BETWEEN A.DATA_INIZIO AND A.DATA_FINE
AND ISCRIZIONI.MATRICOLA IS NULL

Michele
http://www.HolidaySoft.it
http://www.GarganoSapori.it - Olio ExtraVergine del Gargano
http://www.osteriaoristorante.it - Crea la Vetrina per il tuo Ristorante

paolagumi Profilo | Junior Member

non funziona, mi da errore di sintassi sulla ON

paolagumi Profilo | Junior Member

Ci sono riuscita:

declare @Data as date
set @Data = CAST('2016-10-16' as date)

select * from Domande A
left outer join (SELECT Matricola as Matri FROM Iscrizioni where Iscrizioni.Data = @Data) Mat
on A.Matricola = Matri
where @Data BETWEEN DataInizio AND DataFine
AND Matri IS NULL

ciao e grazie, il tuo suggerimento era quasi perfetto!!

HolidaySoft.it Profilo | Junior Member

...... gli alias erano errati......
SELECT * FROM DOMANDE A LEFT OUTER JOIN (SELECT * FROM ISCRIZIONI WHERE ISCRIZIONI.DATA = @Data) B ON A.MATRICOLA = B.MATRICOLA
WHERE @Data BETWEEN A.DATA_INIZIO AND A.DATA_FINE
AND B.MATRICOLA IS NULL
http://www.HolidaySoft.it
http://www.GarganoSapori.it - Olio ExtraVergine del Gargano
http://www.osteriaoristorante.it - Crea la Vetrina per il tuo Ristorante
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5