Microsoft Access объединяет 4 таблицы для отображения определенных значений из 3 таблиц, но все значения из основной таблицы - PullRequest
0 голосов
/ 17 декабря 2018

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

Имеются четыре таблицы:
Шоу (основная таблица),
Сети,
ShowGenres (связывает несколько жанров с одним шоу),
Жанры.Отношения и все поля показаны на рисунке ниже.

Relationships:

В настоящее время у меня есть страница, на которой отображается следующая информация: showID, showName, showAired,имя сети, showStatus, showRuntime, showSeasons, showEpisodes, showOverview.
В идеале мне бы хотелось, чтобы в поле списка отображался массив жанров, связанных с конкретным шоу.Я довольно долго пытался придумать запрос, чтобы сделать это, ближе всего мне удалось показать соответствующую информацию, но добавил дубликаты страниц.
Вот моя последняя попытка:

SELECT * FROM Shows A
INNER JOIN Networks B ON B.networkID = A.networkID
INNER JOIN ShowGenres C ON C.showID = A.showID
INNER JOIN Genres D ON D.genreID = C.genreID;

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

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Нужно оценить логику уровня представления, которую можно использовать вместе с логикой данных.Очень обобщенно - в запросе 1: Множество - ваш запрос полей, включающих оба поля, будет повторять значения таблицы 1 с каждой из записей Много.Это не может быть изменено с помощью любого дизайна запроса, поскольку это присуще логике данных.

Но на уровне представления вы можете управлять отображением.Используя отчет - источником данных может быть запрос - но свойства отчета предлагают группировку, посредством которой вы можете поместить значение 1 поля в качестве заголовка группы - таким образом, отображая только один раз;а затем под ним перечисляются все многочисленные записи.

Это не список как таковой, хотя в зависимости от того, насколько креативным становятся отчеты / подотчеты, можно потенциально создать этот стиль.Но, в конце концов, вы должны работать над этим на уровне презентации.

0 голосов
/ 17 декабря 2018

Один метод заключается в использовании exists:

select g.*
from genres as g
where exists (select 1
              from showgenres as sg inner join
                   shows as s
                   on sg.showID = s.showID
              where sg.genreID = g.genreID and
                    s.showName = ?
             );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...