2010-01-29 5 views
0

requête 1: cela compte tout le dossier avec le courrier électronique '[email protected]'complexes se combinent sql

select count(*) as total from userbase 
join extrauserinfofromhrms on userbase.username = extrauserinfofromhrms.useremail 
right join logevent on userbase.username = logevent.useremail 
join eachworkflow on logevent.workflowid= eachworkflow.workflowid 
where logevent.actionname ='complete' and logevent.useremail like '[email protected]' 

requête 2: liste tous les utilisateurs avec des e-mails ..

select userbase.username from userbase 
join extrauserinfofromhrms on userbase.username = extrauserinfofromhrms.useremail 

comment utiliser query2 pour lister tous les utilisateurs avec emailaddress et utiliser chaque emailaddrses comme paramètre dans query1?

Répondre

1

SQL est un langage basé sur des ensembles. Cela fonctionne mieux lorsque nous arrêtons de penser ligne par ligne. Ce que vous devez utiliser est une requête d'agrégation:

select userbase.username 
     , count(*) as total 
from userbase 
    join extrauserinfofromhrms on userbase.username = extrauserinfofromhrms.useremail 
    right join logevent on userbase.username = logevent.useremail 
    join eachworkflow on logevent.workflowid= eachworkflow.workflowid 
where logevent.actionname ='complete' 
and logevent.useremail like '[email protected]' 
group by userbase.username 
/