MySQL SQL: ОБНОВЛЕНИЕ при выполнении JOIN для ненормализованной таблицы? - PullRequest
0 голосов
/ 11 марта 2011

ПРОБЛЕМА:

У меня есть две таблицы: таблица животных и таблица заполнителей. Я хочу сделать ОБНОВЛЕНИЕ на столе для животных, чтобы заполнить соответствующие заготовки. Животное таблица не нормализована должным образом.

Возможно ли сделать это с помощью чисто SQL-операторов SQL и не прибегая к зацикливание внутри программы или скрипта?

Пример:

== Вот "до" ==

animal            placeholder
1 | dog           1 | dog   | log 
1 | snog          2 | cat   | mat
1 | _blank_       3 | bird  | word
2 | cat
2 | sat
2 | _blank_
3 | bird
3 | heard
3 | _blank_

== Вот "после" ==

animal            placeholder
1 | dog           1 | dog   | log 
1 | snog          2 | cat   | mat
1 | log           3 | bird  | word
2 | cat
2 | sat
2 | mat
3 | bird
3 | heard
3 | word

ВОПРОС:

Можете ли вы создать SQL-оператор MySQL, который будет использовать UPDATE для преобразования "до" в "после" ??

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

== Решение ==

ОБНОВЛЕНИЕ животного а SET name = ( ВЫБЕРИТЕ существительное ОТ заполнителя ГДЕ ( a.id = id ) ) ГДЕ a.name имеет значение null

1 Ответ

1 голос
/ 11 марта 2011

может быть что-то похожее на это:

update animal a
set name = ( select col2 from placeholder where a.name is null and a.id = id )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...