2017-01-09 10 views
0

あなたは私の状況を以下に教えてくれますか? 私は2つのテーブルを持っています。数値の範囲に基づいて結合を作成する

表1は、次のようになります。 enter image description here

一方、これが表2である:

enter image description here

私はベースの各ジョブのグレードをルックアップするために表1に表2に参加したいと思います上下限欄に表示されます。 、私は次のようになります声明を思い付くために管理し、ここで素敵な回答の一部を概念化することにより

FROM table2 LEFT JOIN table1 ON (table2.[score] >= table1.[lower limit]) AND (table2.[score] <= table1.[upper limit]) 

上記の文は、いくつかのために、しかし、範囲に応じてそれらを結合するために管理します不明な理由により、左側の表の行が欠落していて、それが何であるかを判断できませんでした。たとえば、(表2の2000行、ただしクエリ内の1800のみ)

私は結合を同じ左結合に変更するかのように、結合が原因であると確信しています。

誰かがこれについてアドバイスできますか?

よろしく、 広龍

+0

成績の間にある小数点以下のスコア、つまり59と60の間のスコアですか?またはブランクグレード、グレード<0 or > 100?私はあなたの参加がこれらのスコアを除外するかもしれないと思う - 私は結果にすべてのレコードを強制的に左結合を期待するだろう。 –

答えて

0

おそらく1-100からの値を持つテーブルを作成し、それをあなたのカテゴリにそれぞれを割り当てることがずっときれいになり、そして本質的にあなたのテーブルをミラーリング1. 次に、あなたが行うことができます表2

SELECT Table1.Grade, Table2.Score 
FROM Table2 LEFT JOIN Table1 ON Table2.Score = Table1.Score 

これは間違いなくあなたは手動でスコアを入力環境ている場合、あなたはまた、このような単純なデータマクロを使用することができ、0から100

間のすべての整数をカバーする: 変更

が続いフィールド設定アクションを使用する前に>>表ツール>>表に行き、そして

名を設定し = Table2.Grade

= IIf([Score]>=70,"Good",IIf([Score]<=59,"bad","so so"))

付きこれはスコアを入力するたびに自動的に成績欄に入力されます。

SELECT Table2.Score, 
IIf([Score]>=70,"Good",IIf([Score]<=59,"bad","so so")) AS Grade 
FROM Table2; 

幸運:

別のオプションは、各行を評価し、適切な等級が割り当てられますよう、次のようにクエリを作成することです!

関連する問題