96 messaggi dal 05 maggio 2002
Ciao a tutti!
Ho una tabella con il nome di un utente, nell'atro campo compare se in una determinata data l'utente ha effettuato un'operazione. L'utente puo' fare più operazioni nella stessa data, oppure nessuna.
Riesco a contare quante volte lo stesso utente compie quella stessa operazione nella stessa data. Come faccio a indicare quali utenti non hanno effettuato la stessa operazione nella stessa data?

Nel DB ho anche la tabella ElencoUtenti, quindi potrei fare un JOIN?
Come faccio il JOIN per contare anche quegli utenti, che in quella data, non hanno effettuato un'operazione e quindi che hanno come conteggio zero?

Grazie

lo scoppato:)
879 messaggi dal 09 luglio 2002
www.i-studio.it
Se nella tabella dove c'e' la data ci sono solo i record degli utenti che hanno effettuato l'operazione, allora puoi usare una cosa del genere:
select * from tabella1 where testo not in (select distinct testo from tabella2)

dove tabella1 e' quella con tutti gli utenti e tabella2 e' quella dove c'e' anche la data.

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
96 messaggi dal 05 maggio 2002
Forse sono stato poco chiaro:

ho due tabelle

tab1
NomeUtente
Password

tab2
NomeUtente
Data
Operazione

il campo Operazione puo' assumere più di un valore.
Per ogni utente nella data indicata, devocontare quante volte lo stesso utente ha inserito nel campo Operazione la voce "pippo".
Inoltre vorrei che visualizzassi gli utenti che non hanno inserito "pippo" sempre nello stesso campo.
Questo per avere sempre l'elenco completo degli utenti, con affianco il conteggio corrispondente. Se un utente non ha inserito "pippo" nel campo Operazione, mi deve dare il valore 0.
Spero di essere stato chiaro!

Grazie

lo scoppato:)
879 messaggi dal 09 luglio 2002
www.i-studio.it
Allora, sempre se usi Access, questa query:
SELECT tab1.NomeUtente, count(tab2.NomeUtente) AS conteggio
FROM tab1 LEFT JOIN tab2 ON tab1.NomeUtente = tab2.NomeUtente
Where tab2.operazione = 'Pippo'
GROUP BY tab1.NomeUtente, tab2.NomeUtente;

ti mostra l'elenco di tutti gli utenti che hai nella tabella tab1 con il conteggio di quante volte c'e' nel campo "operazione" il valore "pippo".
E' quello che ti serviva?

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
879 messaggi dal 09 luglio 2002
www.i-studio.it
Una piccola modifica alla query:
SELECT tab1.NomeUtente, count(tab2.NomeUtente) AS conteggio 
FROM tab1 LEFT JOIN tab2 ON tab1.NomeUtente = tab2.NomeUtente 
where  iif(tab2.operazione is null, 'pippo', tab2.operazione) = 'pippo'
GROUP BY tab1.NomeUtente, tab2.NomeUtente

Altrimenti ti faceva il conto solo per gli utenti che avevano "pippo" nel campo "operazione".

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
96 messaggi dal 05 maggio 2002
Innanzitutto grazie per la tua pazienza!

La query che mi indichi di usare l'ho già fatta e funziona benissimo. Pero' mi conta quante colte un utente a inserito "pippo" che nel campo Operazione.
Io vorrei visualizzare anche qugli utenti il cui conteggio è zero. Infatti puo' succedere che uno o più utenti non abbia inserito "pippo" nel campo Operazione.

lo scoppato:)
879 messaggi dal 09 luglio 2002
www.i-studio.it
Hai visto che ho modificato la query perche' avevo fatto un errore?
Non va ancora bene per i tuoi scopi?

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
96 messaggi dal 05 maggio 2002
Ho visto la modifica nella query, l'ho provata subito ma mi da' errore.
secondo me c'è qualcosa che non va nella funzione IIF.
Il campo tab2.Operazione puo' contenere altri valori oltre a "pippo", puo' centrare qualcosa?

L'errore mi dice che è previsto un 2... bho!!!

lo scoppato:)

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.