2017-01-18 11 views
0

月に何人のユーザーが自分の役割を更新/変更したかを調べようとしています。 1月のテーブルに追加のユーザーがいる可能性がありますが、現時点では気にしません。SQL Accessで2つの条件で結合する

両方のテーブルには、二つのフィールドROLEUSERとROLENAME ONY持っており、彼らはこのようになります。

ROLEUSER ROLENAME 
abc123  admin 
abc123  reader 
abc123  writer 
cde456  reader 
cde456  writer 

は、私が試した:

SELECT Jan.ROLEUSER, Jan.ROLENAME 
FROM Jan INNER JOIN 
May ON Jan.ROLEUSER = May.ROLEUSER 
AND Jan.ROLENAME <> May.ROLENAME 
+0

あなたは月と月の両方のためのサンプルデータを追加し、結果に表示したいことができますを使用したい場合は? – jveazey

答えて

0

どの程度

SELECT Jan.ROLEUSER, Jan.ROLENAME 
    FROM Jan 
    WHERE NOT Exists (
    SELECT * FROM May where 
    Jan.ROLEUSER = MAY.ROLEUSER AND Jan.ROLENAME = MAY.ROLENAME 
) 

それとも、参加

SELECT Jan.ROLEUSER, Jan.ROLENAME 
    FROM Jan LEFT OUTER JOIN May ON 
    Jan.ROLEUSER = MAY.ROLEUSER AND Jan.ROLENAME = MAY.ROLENAME 
WHERE MAY.ROLEUSER is null 
+0

最初のクエリが機能します。それは私に、新しいユーザーと更新された役割の両方を与えました。ありがとうございました! –

0

動作するはずアウター参照して、NOT IN句を使用します。

SELECT Jan.ROLEUSER, Jan.ROLENAME 
    FROM Jan 
WHERE Jan.ROLEUSER NOT (SELECT May.ROLEUSER FROM May) 
    AND Jan.ROLEUSER NOT IN (SELECT May.ROLEUSER FROM May WHERE Jan.ROLENAME = May.ROLENAME) 

これは、次のことを行います(ユーザーがテーブルごとに1レコードあると仮定します)。

  1. 月テーブル内のユーザーはまた、月に行った同じ役割を持っていない月のテーブル
  2. 月テーブル内のユーザーに存在します。
  3. Janテーブルの現在のユーザーとロールを返します。
+0

私は提案された解決策の論理を理解していません。だから私が必要とするもの:ユーザーは昨年の5月と同じように1月に同じだろうが、役割は変化している。私は1月のテーブルからの価値が必要です –

+0

テーブルの内容についてもっと説明できますか?たとえば、1月に、ユーザabc123は複数のレコードを持っていますか?つまり、ユーザが複数のロールを持つことはできますか? – jveazey

+0

はい。したがって、ユーザーは両方の月に複数の役割を担うことになります。それらのうちのいくつかは同じかもしれないし、いくつかは追加または削除されるかもしれません。 –

関連する問題