Я работаю над базой данных MS Access 2016, которая содержит информацию о коллекции книг рецептов. У меня есть несколько таблиц для разных типов данных, которые связаны друг с другом, используя отношения "многие к одному" и "многие ко многим". Затем я хочу экспортировать "таблицу результатов" (в формате Excel) для каждой книги (через запрос), содержащую список названий рецептов, страницы, ингредиентов, "сопутствующих" ингредиентов, посуды и заметок. Вывод должен быть примерно таким:

Желаемый результат

Я попытался сделать это с помощью инструмента отчетов в Access и установив для элемента управления "Скрыть копии" значение "Да". Проблема в том, что когда я генерирую отчет, данные продолжают повторяться, например так:

Достигнутый результат

У меня вопрос, есть ли способ сделать то, что я хочу, или что-то подобное, не модифицируя каждую таблицу одну за другой, потому что у меня есть более 70 книг и более 7000 рецептов. Мой запрос подсхемы есть:

Схема запроса БД

И сгенерированный SQL:

SELECT N_recetas.no_libro, N_recetas.Id, N_recetas.nombre_receta, N_recetas.pag, N_ingredientes.ingrediente, N_acompanamientos.nombre_acomp, N_utensilios.utensilio, N_recetas.notas
FROM N_utensilios
RIGHT JOIN ((((N_libros INNER JOIN N_recetas ON N_libros.no_libro = N_recetas.no_libro) LEFT JOIN (N_acompanamientos RIGHT JOIN rels_rec_acomp ON N_acompanamientos.Id = rels_rec_acomp.Id_acompanamiento_Fk) ON N_recetas.Id = rels_rec_acomp.Id_receta_FK) LEFT JOIN rels_rec_utensilios ON N_recetas.Id = rels_rec_utensilios.IdRecetaFK) INNER JOIN (N_ingredientes INNER JOIN rels_rec_ings ON N_ingredientes.id_ingrediente = rels_rec_ings.Id_ingrediente_FK) ON N_recetas.Id = rels_rec_ings.Id_receta_FK) ON N_utensilios.Id = rels_rec_utensilios.IdUtensilioFK
WHERE (((N_recetas.no_libro)=78));

1 ответ1

0

В базе данных каждая строка должна содержать все данные столбца. Каждый ряд не зависит от всех остальных рядов. Вы не можете иметь такую структуру как Excel.

Здесь вторая строка не содержит информацию об ID, nombre_receta, pag и т.д., Поэтому она отображается как независимая строка.

Вы должны написать другую информацию столбца также во второй строке.

Ваши строки должны выглядеть так:

UniqueID,8154, Batidillo, 22, Sal, Tortillas

UniqueID,8154, Batidillo, 22, Sal, Guajes

И уникальный идентификатор будет первичным ключом и должен отличаться.

Затем вы можете запросить вашу базу данных.

Если вы считаете, что вы повторяете информацию в каждой строке, то подумайте об использовании другой таблицы для повторяющейся информации и создайте столбец, содержащий идентификатор строки таблицы.

см. раздел «Пример данных в ненормализованной форме», чтобы ознакомиться с ними. https://support.office.com/en-us/article/move-data-from-excel-to-access-90c35a40-bcc3-46d9-aa7f-4106f78850b4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .