0

ちょっと難しい質問があります。データベースに 2 つのテーブルがあります。データは、特定のプログラムで学生に割り当てられたラップトップからのものです。

表 1 には次の情報があります: Model、SiteID、SiteName、ServiceTag、AssetTag、Floor、Room、FirstName、LastName、STUDENTID、Grade

表 2 には次の情報があります: SiteID、SiteName、LastName、FirstName、Grade、STUDENTID

表 1 には、昨年の名簿のデータと、生徒とその生徒に割り当てられたコンピューターが含まれています。表 2 は、プログラムに参加している学生の新しい名簿を示しています。表 2 の学生の中には、表 1 の学生 (まだプログラムに参加している学生) と一致する人もいますが、一致しない人もいます。

次のことを行う必要があります: 表 2 のすべての生徒を取得し、前述の SiteID (マシンがある学校) に既にあるマシンを割り当てます。同じマシンを割り当てて、余分な学生のために新しいマシンを展開する必要がある場所を空白のままにします。

例を示すためにここに画像を挿入しようとしましたが、それはできません。あなたが私を助けることができれば、データを含む基本的な例を喜んでメールでお送りします.

編集1:
これまでのところ、まだプログラムに参加している学生を元に戻し、最初に割り当てられたマシンを提供するためのクエリを取得できましたが、他のマシンには学生が割り当てられていません。方法を理解しようとしています他のマシンのデータに新入生の名前を入力します。私が扱っている学校は複数あり、マシンをある学校から別の学校に移動することはできません。新しい名簿に以前よりも多くの学生がいる場合は、それらの学生にマシンを割り当てずに配置する必要があります。新しいシステム。

編集 2:
以下は、テーブルの CSV バージョンと、取得しようとしている結果です。

TABLE 1
MODEL,SITE_ID,SITENAME,SERVICETAG,ASSETTAG,FLOOR,ROOM,FIRSTNAME,LASTNAME,STUDENTID,GRADE
6420,123,MY SCHOOL,1234GM1,AT0012345,1,102,PETER,PEREZ,100123456,1
6420,123,MY SCHOOL,5678GM1,AT0012346,1,102,PAUL,ANDREWS,100123457,1
6420,123,MY SCHOOL,1234FH1,AT0012347,1,102,JOHN,BERRONDO,100123458,3
6420,123,MY SCHOOL,5678FH1,AT0012348,1,102,ANDREW,JONES,100123459,3
6420,123,MY SCHOOL,12344K1,AT0012349,1,102,JONATHAN,DOE,100123460,4

TABLE 2
SITEID,SITENAME,FIRSTNAME,LASTNAME,STUDENTID,GRADE
123,MY SCHOOL,PAUL,ANDREWS,100123457,2
123,MY SCHOOL,JOHN,BERRONDO,100123458,4
123,MY SCHOOL,ANGEL,YOUNG,100123470,1
123,MY SCHOOL,TANIA,MATTHEWS,100123471,1
123,MY SCHOOL,GEORGE,PEREZ,100123472,2
123,MY SCHOOL,WALTER,DOE,100123473,2
123,MY SCHOOL,MATTHEW,PETERS,100123474,3

RESULTING TABLE
SITE ID,SITENAME,SERVICETAG,ASSETTAG,FIRSTNAME1,LASTNAME2,STUDENTID,GRADE
123,MY SCHOOL,5678GM1,AT0012346,PAUL,ANDREWS,100123457,2
123,MY SCHOOL,1234FH1,AT0012347,JOHN,BERRONDO,100123458,4
123,MY SCHOOL,1234GM1,AT0012345,ANGEL,YOUNG,100123470,1
123,MY SCHOOL,5678FH1,AT0012348,TANIA,MATTHEWS,100123471,1
123,MY SCHOOL,12344K1,AT0012349,GEORGE,PEREZ,100123472,2
123,MY SCHOOL,,,WALTER,DOE,100123473,2
123,MY SCHOOL,,,MATTHEW,PETERS,100123474,3

次のSQLクエリを試しました:

SELECT table2.SITEID, table2.SITENAME, table2.LASTNAME, table2.FIRSTNAME, table2.GRADE, table2.STUDENTID, table1.SERVICETAG, table1.ASSETTAG, 
FROM 
table2 LEFT JOIN table1 ON table2.STUDENTID=table1.STUDENTID;

このクエリは、名簿上の学生の完全なリストを提供しています。古いデータと一致する学生については、マシンを保持し、残りは空白のままです。

SELECT table1.[SITEID], table1.[SITENAME], table1.[SERVICETAG], table1.[ASSETTAG]
FROM table1 LEFT JOIN [query 1] ON table1.[SERVICETAG] = [query 1].[SERVICETAG]
WHERE ((([query 1].[SERVICETAG]) Is Null));

これにより、新しい名簿のどの生徒にもまだ割り当てられていないマシンが表示されます。

SELECT table2.SITEID, table2.SITENAME, table2.LASTNAME, table2.FIRSTNAME, table2.GRADE, table2.STUDENTID
FROM table2 LEFT JOIN table1 ON table2.STUDENTID= table1.STUDENTID
WHERE (((table1.STUDENTID) Is Null))
ORDER BY table2.SITEID;

これは、一致するコンピューターを持っていない生徒 (つまり、割り当てられたコンピューターが必要な生徒) を私に与えています。

ご覧のとおり、その間にすべてがあり、最終的にこのデータを結合して、CSV 結果デモに表示される結果を得ることができれば素晴らしいと思います。

更新 3:
今のところ、Excel の方法を取ることにしました。半分自動で半分手動になりました。必要なものを提供してくれるVLOOKUPシステムを使用していますが、データには注意する必要があります。

近づき次第更新していきます。

4

1 に答える 1