SQL: объединение таблиц по первичному ключу и возврат первичного ключа - PullRequest
0 голосов
/ 07 марта 2012

Я пишу приложение на C # и использую Access .mdb. У меня есть таблица с сообщениями электронной почты и таблица с отношениями сообщений (каждое сообщение электронной почты может быть назначено нескольким группам работников), поэтому строки в таблице отношений имеют поля "msgId" и "teamName".

Я хочу получить все сообщения из первой таблицы, которые назначены указанной команде. Я использую следующий запрос:

"SELECT * FROM Mails INNER JOIN MailAssignments ON Mails.msgId = MailAssignments.msgId"

Но он не возвращает msgId для меня, я думаю, потому что таблицы объединяются в этом поле, но потом я Я не могу идентифицировать сообщения в моем коде C #.

Как сделать так, чтобы запрос возвращал для меня msgId?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Достаточно указать имя поля в выделении или добавить имя таблицы, в которую вы хотите получить все поля, попробуйте этот список выбора:

SELECT Mails.* 
FROM Mails INNER JOIN MailAssignments 
ON Mails.msgId = MailAssignments.msgId
0 голосов
/ 07 марта 2012

В наборе результатов должно появиться дважды , для Mails.msgId и MailAssignments.msgId соответственно. Однако не следует ожидать двух столбцов с именем msgId. Скорее СУБД должна устранять неоднозначность столбцов. Это требование стандартов SQL, кстати.

IIRC Access переименует оба столбца, чтобы устранить их неоднозначность. Это объясняет, почему в результате нет столбца с именем msgId.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...