mmmm ma si tratta sempre di 3 select, pesa lo stesso, molto di più di una join.
Se io dovessi controllare se un IDCliente é presente in almeno una tabella, come dovrei fare con una sola join?
Io pensavo ad una FULL OUTER JOIN, ma non funziona, o meglio forse non la applico nel modo giusto...
Soluzione con 3 select count:
codice:
MyComm.CommandText = "SELECT COUNT(*) FROM tblAggiornamenti WHERE IDCliente="+IDCliente;
numeroOccorrenze += Convert.ToInt32(MyComm.ExecuteScalar());
MyComm.CommandText = "SELECT COUNT(*) FROM tblStrumenti WHERE IDCliente="+IDCliente;
numeroOccorrenze += Convert.ToInt32(MyComm.ExecuteScalar());
MyComm.CommandText = "SELECT COUNT(*) FROM tblStatoStrumento WHERE IDCliente="+IDCliente;
numeroOccorrenze += Convert.ToInt32(MyComm.ExecuteScalar());
Soluzione con un'unica FULL OUTER JOIN (errata)
codice:
string prova = " SELECT COUNT(*) FROM "+
" tblAggiornamenti FULL OUTER JOIN tblStrumenti "+
" ON tblAggiornamenti.IDCliente=tblStrumenti.IDCliente " +
" FULL OUTER JOIN tblStatoStrumento "+
" ON tblAggiornamenti.IDCliente=tblStatoStrumento.IDCliente " +
" WHERE tblAggiornamenti.IDCliente="+IDCliente+" AND "+
" tblStrumenti.IDCliente="+IDCliente+" AND "+
" tblStatoStrumento.IDCliente="+IDCliente;
Soluzione: a volte mi ritorna un numero esagerato (80000 al posto di 83) a volte 0 quando in realtà la prima ritorna un num > 0. Quindi non funzia.
:master: