2017-03-22 10 views
0

私は3つまでのメトリックで得点されたチームを持っています。売上、リード、時間。他のテーブルの一意のIDごとに左のテーブルのすべての行を繰り返します。

私はこれらのスコアを保持しているMS Accessのテーブル(tblScores)を持っています。 (誰かが何の販売がなかった場合など、販売のためにそれらのエントリはないだろう)

| USERID | Metric | Score | 
---------------------------------- 
| 20511 |  Sales | 12  | 
| 20511 |  Leads | 9  | 
| 20511 |  Hours | 8  | 
| 20694 |  Sales | 10  | 
| 20694 |  Hours | 7.5 | 

私はそれを含む上記の表の各ユーザのための出力の3つのレコード(各可能なメトリック)するSQLクエリを作成しようとしていますそのメトリックのエントリを持たないヌル値。例えば

| USERID | Metric | Score | 
---------------------------------- 
| 20511 |  Sales | 12  | 
| 20511 |  Leads | 9  | 
| 20511 |  Hours | 8  | 
| 20694 |  Sales | 10  | 
| 20694 |  Leads | Null | 
| 20694 |  Hours | 7.5 | 

私はちょうどこれらの3つのメトリック

| Metric | 
--------------- 
|  Sales | 
|  Leads | 
|  Hours | 

で別のテーブル(tblMetrics)を設定し、左を行うことを試みたが

SELECT tblMetrics.*, TblScores.UserID, TblScores.Score 
FROM tblMetrics LEFT JOIN TblScores ON tblMetrics.Metric = TblScores.Metric; 
スコアテーブルに対して、メトリック表に参加します

でも、依然として望ましい出力が得られていません。これが可能なら誰でも知っていますか?

+0

、わからないでなければなりませんどちらがここにあるか。 –

+0

こんにちは。返信いただきありがとうございます。私はうまくいけばそれを少し明確にするために私の質問を更新しました – Leroy

答えて

2

あなたは1が欠落している見つけ、私がアクセスsyntaxisをチェックし、CROSS JOINこの

SELECT DISTINCT M.Metric, S.USERID 
FROM tblMetric M, tblScore S 
のように書くべきである NULL

を割り当てることLEFT JOINを行い、その後、すべての組み合わせを生成するCROSS JOIN最初に行う必要があります

そしてLeft Joinは、あなたが私達にあなたのtblMetricsとTblScoresを表示することができます

SELECT userMetrc.*, S.Score 
FROM (SELECT DISTINCT M.Metric, S.USERID 
     FROM tblMetric M, tblScore S 
    ) userMetric 
LEFT JOIN tblScore S 
    ON ( userMetric.USERID = S.USERID 
     AND userMetric.Metric = S.Metric) 
+0

こんにちは。私はこれらのソリューションを両方とも試して、from節で構文エラーが発生していますか?クロスジョインはAccessでサポートされていない可能性がありますか? – Leroy

+0

私はアクセスのクロス結合の構文をチェックし、別のものだけを試してみます。そして、おそらくAND(AND)条件のために '()'が必要です。 –

+0

Brilliant。最後のクエリは完全に機能します。ありがとうございます:-) – Leroy

関連する問題