2016-11-15 7 views
0

私は4つのテーブルTransaction,Merchant,onlineuserおよびonlineuserhistoryを持っています。 ユーザーがonlinesiteに入ると、そのユーザーの1行がonlineuserテーブルに作成され、entry_dateexpiry_dateのテーブルに作成されます。彼がサイトを訪れるたびにonlineuserhistoryテーブルにエントリが作成されるため、2011年11月1日から2011年11月15日までの日付では、onlineuserテーブルに1レコード、onlineuserhistoryテーブルに5レコードそれを5回訪れた。 今月11月16日にサイトにアクセスしたような月が上がった場合、onlineuserは、その販売者とそのユーザーに対して1つのレコードしか存在しないため、日付を変更します。データが第2テーブルに存在するかどうかをチェック

報告目的のために、少なくとも1つのレコードが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' 

どのように私は、少なくとも1つのレコードは、その日付の範囲内に存在するかどうかをチェックするためにonlineuserhistoryテーブルの上にチェックを行うことができるように私はこれを更新しないと、複数のレコードも、その後存在する場合、私は1つのレコードを検討すべきですそれのために。

+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

それをseprateで選択したい場合、totalnumPurchasesの数は変わる必要があります – user7142609

+0

どのように変化しますか?あなたのクエリは何でもグループ化されていません。それはすべての商人の総数に過ぎません。問題は明らかではない、私はそれを理解するために全力を尽くした。いくつかのサンプルデータと望みの結果を示したら助けになります。 – Barmar

関連する問題