2016-11-15 1 views
0

4 테이블 Transaction, Merchant, onlineuseronlineuserhistory이 있습니다. 사용자가 onlinesite에 들어가면 onlineuser 테이블에 해당 사용자에 대한 행 하나를 만들고 entry_dateexpiry_date으로 만듭니다. 그가 사이트를 방문 할 때마다 우리는 onlineuserhistory 테이블에 항목을 만듭니다. 따라서 2011 년 11 월 1 일부터 2011 년 11 월 15 일까지는 onlineuser 테이블에 하나의 레코드가 있고 그가 가질 수있는 테이블은 onlineuserhistory 개가 있습니다 5 번 방문했다. 이제 2011 년 11 월 16 일에 사이트에 올라온 것처럼 달이 올 때 onlineuser은 해당 판매자 및 사용자에 대해 하나의 레코드 만 존재할 수 있으므로 날짜를 변경합니다.데이터가 두 번째 테이블에 있는지 확인하십시오.

신고 목적으로 적어도 하나의 레코드가 onlineuserhistory 테이블에 있는지 확인해야합니다. 일찌기 쓴 사람은 왼쪽에 onlieuser 테이블에 합류하여 썼습니다.

SELECT COUNT(*) AS TotalNumPurchases 
FROM Transactions t 
INNER JOIN Merchants m ON m.MerchantID = t.FromEntityID AND 
m.StatusID = 8 AND m.IsHidden = 0 
INNER JOIN MerchantLocations ml ON m.MerchantID = ml.MerchantID 
INNER JOIN Accounts AS a on t.ToEntityID = a.AccountID 
LEFT JOIN onlineuser au ON m.MerchantID = au.MerchantID and 
a.ManagerUserID = au.UserID 
a.ManagerUserID = au.UserID 
WHERE t.ToEntityTypeID = 5 
AND t.TransactionDate BETWEEN '2016-11-11 07:00:00' AND '2016-11-15 06:59:59' 

내가 확인 onlineuserhistory 테이블에 체크를 할 수 있도록 적어도 하나 개의 기록을 해당 날짜 범위에 존재하고, 하나 개 이상의 기록이 존재하는 경우 또한 내가 한 기록을 고려해야 할 경우, 나는이 업데이트 어떻게 그에 대한.

+0

왜이 체크를해야합니까? 거래가있는 경우 해당 기간 동안 온라인 상태 여야합니다. – Barmar

+0

onlineuserhistory에서 하위 쿼리'select count (*)를 추가 할 수 있습니다. 'xxx'와 'yyy'' 사이의 날짜 – Barmar

+0

하위 쿼리는 어디에 추가합니까? 가입 안에? – user7142609

답변

0

기간 중에 온라인 상태인지 여부를 반환하는 하위 쿼리를 추가 할 수 있습니다.

SELECT COUNT(*) AS TotalNumPurchases, 
     (SELECT COUNT(*) > 0 
     FROM onlineuserhistory 
     WHERE date BETWEEN '2016-11-11 07:00:00' AND '2016-11-15 06:59:59') AS anyOnline 
FROM Transactions t 
INNER JOIN Merchants m ON m.MerchantID = t.FromEntityID AND 
m.StatusID = 8 AND m.IsHidden = 0 
INNER JOIN MerchantLocations ml ON m.MerchantID = ml.MerchantID 
INNER JOIN Accounts AS a on t.ToEntityID = a.AccountID 
LEFT JOIN onlineuser au ON m.MerchantID = au.MerchantID and 
    a.ManagerUserID = au.UserID 
WHERE t.ToEntityTypeID = 5 
AND t.TransactionDate BETWEEN '2016-11-11 07:00:00' AND '2016-11-15 06:59:59' 
+0

Id 그것을 seprate select로 선택하고 싶다면, totalnumPurchases 수가 달라져야합니다. – user7142609

+0

어떤 방식으로 변화합니까? 귀하의 질의는 아무 것도 아닌 그룹으로 분류되어 있지 않습니다. 모든 판매자의 총 숫자 일 뿐이므로 어떤 계정에서 온라인에 있는지를 알고 싶다고 생각했습니다. 질문은 명확하지 않다. 나는 그것을 이해하기 위해 최선을 다했다. 샘플 데이터와 원하는 결과를 보여 주면 도움이 될 것입니다. – Barmar

관련 문제