2012-09-14 6 views
1

일반적인 요구 사항이 있습니다.조건에 따라 일부 특정 테이블의 레코드 수를 찾는 방법은 무엇입니까?

"userID"와 "UserEmail"의 두 열이있는 사용자 테이블 "tblUsers"가 있습니다. UserEmail 열은 고유 한 열이 아니므로 동일한 전자 메일 ID를 가진 두 개의 레코드가 존재할 수 있지만 UserID 열은 ID 열입니다.

"tblOrders"및 "tblTravelers"테이블이 두 개 더 있으며 두 테이블 모두 "tblUsers"UserID 열과 연결된 외래 키로 "UserID"열을 가지고 있습니다.

자, 내가 원하는 나에게이 데이터 테이블을 반환하는 저장 프로 시저입니다

enter image description here

저장 프로 시저에 매개 변수는 나에게 위의 표를 반환해야로서 내가 "USEREMAIL"를 주면 내 말은 주어진 "UserEmail"에 대해 각각의 UserID와 관련된 레코드를 보여줍니다.

SQL Server의 초보자입니다. 개별 레코드 수를 찾는 방법을 알고 있지만 위의 요구 사항에 대한 솔루션을 찾을 수 없습니다.

답변

2

이렇게하면 주문 및 여행자를 행으로, 사용자를 행으로, 사용자를 행으로 반환합니다.

select users.id, users.email, 
     COUNT(distinct orders.oid) as orders, 
     COUNT(distinct travellers.tid) as travellers 
from users 
    left join orders on users.id = orders.userid 
    left join travellers on users.id = travellers.userid 
where users.email = @email 
group by users.id, users.email 
+1

매우 좋습니다! 선택 목록에서'users.email'을'@ email'로 대체하여'group by' 절에서'users.email'을 삭제할 수 있습니다. – dasblinkenlight

관련 문제