158 messaggi dal 23 settembre 2005
Ciao a tutti!
Lavorando con asp.net mi collego ad un database SqlServer creato da più tabelle che (almeno sembra[non ho creato io il database e nemmeno l'attuale progetto che sto solo ottimizzando]) sono in relazione tra loro grazie ad alcuni campi...
Al che ho visto che effettuando una query utilizzando le join non mi venivano estratti tutti i dati...
Eliminando una join invece, sembra che ci siano tutti i record...
Ho provato così a scrivere questo codice (uso un repeater nella pagina aspx):
RowCount = Ric_mail.Items.Count
Response.Write(RowCount)
Response.End

Così ho visto che le mail che erano collegate alla tabella cliente erano solo 98, mentre eliminando la join ho trovato ben 1712 record...
È possibile, secondo voi, una cosa del genere??
Secondo me ha ben poco senso!
A questo punto non so come creare la query... nel senso: faccio vedere tutte le e-mail o solo quelle che sono "intestate" a qualcuno??

Grazie mille a chi mi consiglia
Ciao
Adriana

Adry
_______________________________________________________

Lascia di quando in quando per me qualche sorriso, e ne avrò vita.
- W. Shakespeare -
2.198 messaggi dal 30 novembre 2001
non ho capito bene qual'è il problema, ma sicuramente se elimini una join è probabile che il db ti restituisca meno righe, se è questa la domanda.
158 messaggi dal 23 settembre 2005
in pratica ho due tabelle: Mail e Clienti
Ogni Mail deve essere per forza collegata a un Cliente... Infatti sulla tabella Mail ho un campo MClienteID che fa (almeno dovrebbe) da chiave esterna alla tabella Clienti dove ho il campo clienteID...
Quindi per forza devo fare una query del tipo:
Select * from Mail, Clienti where MClienteID = clienteID

Solo che in questo modo mi ritornano 98 records...
Ossia sono 98 le Mail che sono intestate ad un Cliente...

Se io invece faccio una query del tipo:
Select * from Mail

i records ritornati sono 1712...
Ciò significa che 1614 Mail (1712-98) non sono intestate a nessun Cliente... e ciò non può essere possibile...

spero di essermi spiegata meglio...
Il problema è come creo la query, nel primo o nel secondo modo?
O faccio notare ai superiori quest'"errore"?

Ciao
Adriana

Adry
_______________________________________________________

Lascia di quando in quando per me qualche sorriso, e ne avrò vita.
- W. Shakespeare -
2.198 messaggi dal 30 novembre 2001
come ti dicevo prima è possibile, probabilmente chi ha fatto il db non ha messo il vincolo sulla chiave esterna, e quando hai delle chiavi esterne ti conviene usare la join, per esempio:
select * from Mail inner join Clienti On Mail.MClienteID = Clienti.ClienteId
oppure se li vuoi tutti invece della Inner usa la Left Outer
e poi se vuoi puoi fare una select per controllare della tabella clienti quali non hanno una mail.
158 messaggi dal 23 settembre 2005
Ti ringrazio, proverò a fare come mi hai suggerito...
Comunque ho fatto una count sulla tabella Clienti e ho trovato che ci sono 87 clienti senza Mail... (grazie per la dritta, avevo fatto tutti gli altri controlli, ma non avevo pensato a questo)
Vedrò se riuscirò a risolvere entro stasera, altrimenti provvederò a fare in modo che chi verrà dopo di me sappia dell'errore e agisca di conseguenza!!

Ciao
Grazie mille
Adriana

Adry
_______________________________________________________

Lascia di quando in quando per me qualche sorriso, e ne avrò vita.
- W. Shakespeare -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.