Как я могу отобразить мой первичный ключ в виде столбца при использовании внутреннего соединения? - PullRequest
0 голосов
/ 18 февраля 2020
select StaffNo, SName, BranchName from STAFF  inner join BRANCH on staff.branchno = Branch.branchno;

Я пытаюсь отобразить BranchNo в результатах вышеупомянутого запроса, всякий раз, когда я добавляю BranchNo после имени ветви, как это.

select StaffNo, SName, BranchName, Branchno from STAFF  inner join BRANCH on staff.branchno = Branch.branchno;

Я получаю этот код ошибки ORA-00918: столбец неоднозначно определены. Насколько я понимаю, это как-то связано с тем, что BranchNo является моим основным ключом, есть ли способ обойти это и отобразить BranchNo в результатах запроса? Большое спасибо.

1 Ответ

0 голосов
/ 18 февраля 2020

Просто добавьте префикс неоднозначного имени столбца к таблице, к которой он принадлежит.

На самом деле, вы должны всегда добавлять префикс столбцов в многостоловых запросах к соответствующим именам таблиц; это делает запросы однозначными для вашей базы данных и для читателей (и будущих сопровождающих) запроса.

Для этого удобны псевдонимы таблиц (они делают запрос короче).

Вот ваш обновленный запрос - я сделал несколько предположений относительно того, из какой таблицы происходит каждый столбец, и вам, возможно, понадобится просмотреть:

select 
    s.staffno, 
    s.sname, 
    b.branchname,
    s.branchno
from staff s 
inner join branch b on s.branchno = b.branchno;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...