SQL неизвестный столбец при выполнении соединения - PullRequest
0 голосов
/ 15 апреля 2011

Я получаю сообщение об ошибке "Неизвестный столбец 'guest_guest.id' в 'списке полей'" при попытке выполнить следующее:

SELECT guests_guest.id
FROM `guests_guest` full join
guests_guest_group
on guests_guest.id=guests_guest_group.guest_id

Все имена столбцов и таблиц верны. на самом деле, работает только

SELECT guests_guest.id
FROM `guests_guest`

работает просто отлично. Я подозреваю, что есть синтаксическая проблема, которую я пропускаю. что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 15 апреля 2011

full join?

Вы пытались просто удалить full?

Это не Oracle, это MySQL, верно?AFAIK, FULL JOIN еще не реализован в MySQL.

Анализатор (потому что "full" - это не ключевое слово, которое он знает), оценивает ваш запрос как:

SELECT guests_guest.id
FROM guests_guest AS full                 <--- crucial note
  JOIN guests_guest_group
    ON guests_guest.id = guests_guest_group.guest_id

После этого guests_guest это не имя, которое он знает, но он использует full в качестве псевдонима для таблицы guests_guest. Вот почему возникает эта ошибка.

Если вам действительно нужен FULL JOIN, а не (INNER) JOIN, затем найдите SO, как реализовать FULL JOIN в MYSQL.

2 голосов
/ 15 апреля 2011

попробовать:

SELECT gg.id
FROM `guests_guest` as gg
join guests_guest_group as ggg
on ggg.guest_id=gg.id

при условии, что guest_guest_group не имеет столбца id.

0 голосов
/ 15 апреля 2011

@ rockerest: я гость так.

Две вещи, на которые я бы посмотрел:

  1. Правописание ... Я быстрый типер, но иногда мои пальцыдислексик.В худшем случае, сделайте описание для каждой таблицы и сравните имена столбцов друг с другом.Или используйте системные имена столбцов и скопируйте / вставьте.

  2. Псевдонимы ... но кто-то еще упомянул это.

Так что я угадал только одну вещь.

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