Ошибка MySQL: 1054 Неизвестный столбец в предложении where - PullRequest
1 голос
/ 15 февраля 2012

Я создаю представление с запросом, показанным ниже:

create view v2 as
(select * from appearance a
where exists (
    select p.id from photo p, photographer u, person s
    where p.takenBy = u.id
    and u.id = s.id
    and a.isShownIn = p.id
    and s.name = 'Fred'
    )
);

Таблица внешнего вида имеет 2 столбца 'shows' и 'isShownIn', но когда я пытаюсь вставить в представление, он выдает ошибку в виде кода ошибки: 1054. Неизвестный столбец 'a.isShownIn' в 'where clause'

Просматривая это, я проверяю, что я ошибаюсь по псевдониму, но для меня все выглядит нормально, может кто-нибудь указать, где может быть ошибка?

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Почему вы используете exists()? Почему бы просто не присоединиться к ним ...

create view v2 as
select a.* 
from appearance a, photo p, photographer u, person s
where a.isShownIn = p.id
  and p.takenBy = u.id
  and u.id = s.id
  and s.name = 'Fred'
0 голосов
/ 15 февраля 2012

Вы не сможете вставить в представление, созданное таким образом. Только определенные виды могут быть обновлены. В вашем конкретном случае вы должны просто вставить в таблицу appearance, поскольку ваше представление - это просто выбор из этой таблицы.

Ограничения для обновляемых представлений: this out. В вашем представлении есть такая проблема: «Подзапрос в предложении WHERE, который ссылается на таблицу в предложении FROM»

Как и предложил @Umbrella, вы можете использовать соединение вместо существующего, и таким образом вы избежите внутреннего запроса, и у вас может появиться обновляемое представление, но я действительно считаю, что нет необходимости вставлять в это представление, потому что Вы получите тот же эффект, просто вставив в таблицу appearance.

...