
Originariamente inviata da
marocco82
Salve a tutti,
ho un db access con due tabelle (clienti e ore_mese) così composte:
clienti
id |
operatore |
inserito |
1 |
pinco pallo |
Ok |
2 |
tizio caio |
Ok |
4 |
pinco pallo |
Ok |
5 |
pinco pallo |
Ko |
ore_mese
id |
operatore |
ore |
1 |
pinco pallo |
32 |
2 |
pippo pluto |
0 |
3 |
tizio caio |
15 |
Vorrei visualizzare una colonna con la lista di tutti gli operatori della tabella ore_mese con le rispettive ore nella colonna successiva e, nella colonna di seguito, il conteggio degli "Ok" contenuti nel campo "inserito".
ES.
operatore |
ore |
inserito Ok |
pinco pallo |
32 |
2 |
pippo pluto |
0 |
0 |
tizio caio |
15 |
1 |
Ho fatto decine di tentativi con il JOIN tra le due tabelle prendendo in considerazione, come chiave primaria, il campo operatore ma non riesco a visualizzare più di un operatore.
Di seguito il codice:
codice:
sql = "SELECT ore_mese.operatore, ore_mese.ore, COUNT (clienti.inserito) AS quanti FROM ore_mese INNER JOIN clienti ON clienti.operatore=ore_mese.operatore WHERE clienti.inserito='Ok' GROUP BY ore_mese.operatore, ore_mese.ore"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3
if not rs.EOF then
do while not(rs.eof)
Sicuramente non ho ben chiara la sintassi del JOIN.
Potreste darmi una mano?
Grazie a tutti.
ciao
io farei nel modo seguente
durante il ciclo di lettura aprirei un recordset temporaneo per eseguire il conteggio
faccio un esempio postando il codice che farei io...
codice:
dim sql,sql1,inseriti
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs1 = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3
if not rs.EOF then
do until rs.eof
sql1="SELECT count(*) as inseritoOK from Clienti where operatore='" & rs("operatore") & " and inserito='ok'; "
rs1.open sql1,conn, 3, 3
if isNumeric(rs1(inseritoOK")) then
inseriti=rs1("inseritoOK")
else
inseriti=0
end if
rs1.Close
' ....facci quello che vuoi tabella, etc etc
response.write("<br>operatore:" & rs("operatore") & ", ore: " & rs("ore") & ", inseriti:" & inseriti)
rs.movenext
loop
end if
rs.close
ho messo il test numerico perche se il contatore non trova nulla puo darsi che ritorni un carattere blank nel campo "inseritoOK"...
mi sembra piu semplice che impelagarsi in un join che non è fatto per questo scopo...
ciao