Where exists

mercoledì 20 ottobre 2010 - 17.04

dandi.box Profilo | Junior Member

cosa sbaglio in quest query?? è sempre vera


SELECT
Corsi.*
Generi.DescrizioneGenere
FROM
Corsi
INNER JOIN
Generi ON Generi.ID = Corsi.IDGenere
... altre JOIN
WHERE
EXISTS (SELECT Count(*) FROM AttivitaCorsi WHERE AttivitaCorsi.IDAttivita=@IDAttivita OR @IDAttivita IS NULL) AND
(Corsi.IDGenere = @IDGenere OR @IDGenere IS NULL) AND....


RETURN


praticamente vorrei fare in modo che passando IDAttivita mi cerchi tutti i corsi che contengono quell'attivita e che il valore è null non consideri la condizione (ovviamente visualizzando il corso una sola volta)

il problema è che è sempre true!! anche quando IDAttivita non dovrebbe essere presenti in AttivitaCorsi

lbenaglia Profilo | Guru

>il problema è che è sempre true!! anche quando IDAttivita non
>dovrebbe essere presenti in AttivitaCorsi
Rispondere alla cieca senza un esempio completo che riproduce il problema è sempre difficile (spesso impossibile).
A prima vista è sbagliata la SELECT utilizzata nella EXISTS. Modificala come:

... EXISTS (SELECT * FROM...

Nel caso la query sia ancora errata posta i comandi di CREATE TABLE di tutte le tabelle coinvolte, alcune righe di prova (INSERT INTO) ed il resultset atteso.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

dandi.box Profilo | Junior Member

Alla fine ho risolto spostando tutto nella JOIN, ho fatto una JOIN con la tabella che mi interessa e poi un group by

grazie mille, ora cmq faccio qualche prova
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5