私は3つのテーブルを持っています。テーブル間のSQL右結合
第一の表は、(指名ユーザ)
id column1
1 1
2 2
3 3
第二の表は、(名前付き取引)のように見えるようになります。ここでは、ユーザーの一部のトランザクションを持っている
user_id transaction_date transaction_expire
1 2017-03-31 2017-05-16
1 2017-02-28 2017-04-16
第三表(命名user_logs)のように見え、我々日を基準にしたユーザーのログがある
user_id date some_log_data
1 2017-03-07 1505
1 2017-03-03 1201
1 2017-03-22 942
1 2017-03-31 1490
1 2017-04-05 1490
すべてのユーザーベースの合計を知りたいdは次のような取引になります:
user_id transaction_date transaction_expire log
1 2017-03-31 2017-05-16 2980
1 2017-02-28 2017-04-16 6628
これはすべてのトランザクションでログの合計を得るために得られる結果です。私はいくつかの結果を得るが、私は合計に結果をしようとするとTRANSACTION_DATEとtransaction_expireの間に、このクエリを行うことにより
は、それらのすべてのためのものです:
SELECT t.transaction_date, t.transaction_expire, ul.log
FROM user_logs as ul
RIGHT JOIN transactions as t ON ul.user_id= t.user_id
WHERE ul.date BETWEEN t.transaction_date AND t.transaction_expire
このクエリは正しくなりました私の7行を与えるが、私は、これらの2つの異なるトランザクションのログの合計のみを検索したいと考えています。
テーブル間に関係はありますか?たとえば、トランザクションテーブルにuser_id列がないとわかります。 – jarlh
@jarlhはいidは他のテーブルのuser_idですので、すべてのトランザクションのログのすべてのユーザーの合計を知っている3つのテーブル間で結合されます – MrRobot
クエリの列名がサンプルの列名と一致しませんデータ。努力をして、それが一貫していることを確認してください。サンプルデータと期待される結果が一致する必要があります。どこにでも同じ名前があります。 – jarlh