Обновите идентификатор отношения с помощью поиска текста из основной таблицы в таблице отношений. - PullRequest
0 голосов
/ 05 июля 2011

Я импортировал файловую базу данных Software PAD из http://paddatabase.net/download.html в Microsoft Access в таблице с именем main:

MAIN
-----
ID
ProgramName
Program_category_Class
CategoryID <- I created this to create a one to many relation with a new table Category
.
.

Я создал две новые таблицы: категорию и подкатегорию.

Category
--------
ID
CategoryName

Я извлек все значения из поля Program_Category_Class в левой части :: delimiter в категорию таблиц.Данные из Program_Category_Class выглядят следующим образом:

Program_Category_Class
Business::Accounting & Finance
Games & Entertainment::Action
Business::Accounting & Finance
Business::Databases & Tools

Я хочу создать SQL-запрос, который обновляет таблицу MAIN с помощью идентификатора категории из таблицы категорий, которая совпадает с LIKE (слева) в Program_Category_Class.Затем я изменю запрос на соответствие справа налево для таблицы подкатегории.

Я пробовал что-то подобное, но не получил результата:

UPDATE Main SET Main.category = (SELECT Category.ID
FROM Category
WHERE Category.CategoryName LIKE Main.Program_Category_Class+'%')
WHERE (((Exists (SELECT Category.ID
FROM Category
WHERE Category.CategoryName LIKE Main.Program_Category_Class+'%'))<>False));

Поскольку это публичная БД, я могу предоставить копию базы данных всем заинтересованным.

Любая помощь будет принята с благодарностью.Спасибо.

1 Ответ

0 голосов
/ 05 июля 2011

Вы можете удалить <>False, а также некоторые дополнительные скобки.Это не ваша настоящая проблема, но это поможет с удобочитаемостью.Нет, происходит то, что ваш предикат, похожий на предыдущий, эффективно задом наперед - вы пытаетесь сравнить более длинный вопрос с более коротким ответом.Переключите предложение where на WHERE Main.Program_Category_Class like Category.CategoryName + '%' и посмотрите, поможет ли это.
Кроме того, вы пытаетесь обновить Main.category, когда новое поле будет выглядеть как Main.CategoryID.

Для дальнейшего использования,Пожалуйста, рассмотрите эти общие полезные дополнения, чтобы обеспечить: Итак, что вы имеете в виду, что вы не получаете результатов?Жалуется ли запрос на то, что он недействителен (что следует делать, если имена полей являются проблемой), или он не обновляет строки?

...