#mysql #sql
#mysql #sql
Вопрос:
У меня есть две таблицы, подобные таким:
Table Name: Foo
Foo Columns: (ID, UNIQUE_ID, NAME)
Table Name: Bar
Bar Columns (FOO_ID, UNIQUE_ID, NAME)
Я в основном хочу, чтобы все, bars
которые принадлежат определенному foo
, и результатом должно быть два столбца UNIQUE_ID
и NAME
каждого bar
.
Мой SQL выглядит следующим образом:
SELECT UNIQUE_ID, NAME FROM BAR B INNER JOIN FOO F ON F.ID = B.FOO_ID WHERE F.UNIQUE_ID = 123
Я предоставляю UNIQUE_ID
. Проблема в том, что в обеих таблицах есть UNIQUE_ID
столбец, поэтому я получаю следующую ошибку: SQL Error: ambiguous column name: UNIQUE_ID
. Как мне добавить псевдоним для столбца в Foo
, чтобы мой результат UNIQUE_ID
и NAME
содержал уникальный идентификатор Bar
? Мне не нужен псевдоним для UNIQUE_ID
столбца в Bar
.. результат должен иметь фактическое имя столбца.
Комментарии:
1. Вы пробовали
F.UNIQUE_ID, B.NAME
? Кроме того, последнее, чтобы избежать неоднозначного столбца для вашего имени столбца.2. @forpas без внутреннего соединения он не привязан к определенному
Foo
.FOO_ID
Это внешний ключ, ссылающийся наFoo
таблицу
Ответ №1:
Это то, чего вы хотите?
SELECT B.UNIQUE_ID, B.NAME
FROM BAR B INNER JOIN
FOO F
ON F.ID = B.FOO_ID
WHERE F.UNIQUE_ID = 123
Вы должны указать все ссылки на столбцы в запросе.
Комментарии:
1. о боже.. Я не знаю, как я пропустил это, ха-ха. Мозговой пердеж .. на самом деле вы были очень близки. Но вместо
SELECT F.UNIQUE_ID
я искалSELECT B.UNIQUE_ID
. И поскольку в обеих таблицах естьNAME
, это также должно было бы бытьB.NAME
. Это работает отлично