У меня немного сложный вопрос. У меня есть 2 таблицы в моей базе данных, данные с ноутбуков назначены студентам в определенных программах:
Таблица 1 содержит следующую информацию: Модель, 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, которая дает мне то, что мне нужно, но я должен быть осторожен со своими данными.
Я буду обновлять по мере приближения.