私は4つのテーブルTransaction
,Merchant
,onlineuser
およびonlineuserhistory
を持っています。 ユーザーがonlinesite
に入ると、そのユーザーの1行がonlineuser
テーブルに作成され、entry_date
とexpiry_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つのレコードを検討すべきですそれのために。
なぜこのチェックを行う必要がありますか?彼らが何らかの取引をしているのであれば、その期間中にオンラインになっていなければならないのではないでしょうか? – Barmar
onlineuserhistoryからサブクエリ 'select count(*)を追加するだけです。 'xxx'と 'yyy''の間の日付 – Barmar
サブクエリはどこに追加しますか?参加の中に? – user7142609