簡體   English   中英

Microsoft Access聯接4個表以顯示3個表中的特定值,但顯示主表中的所有值

[英]Microsoft Access joining 4 tables to display specific values from 3 tables but all values from the main table

我已經創建了一個數據庫供用戶“關注”電視節目,我需要創建一個表格來顯示每個節目以及該特定節目的所有相關信息。

我有四個表如下:
顯示(主表),
網絡,
ShowGenres(將多個流派鏈接到一個節目),
流派。 關系和所有字段如下圖所示。

關系:

當前,我有一個頁面,顯示以下信息:showID,showName,showAired,networkName,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;

任何幫助將不勝感激,在此先感謝。

人們必須意識到可以與數據邏輯結合使用的表示層邏輯。 非常通用-在1:Many中-您對包含兩個字段的字段的查詢將對Many記錄的每一個重復1個表值。 這不能通過任何查詢設計更改,因為它是數據邏輯中固有的。

但是在演示級別,您可以控制顯示。 使用報表-數據源可以是查詢-但報表屬性提供了分組,您可以將1字段值作為組標題-這樣僅顯示一次; 然后在其下面列出所有許多記錄。

它本身並不是一個列表框,盡管它取決於報表/子報表的創造性,一個人可能會采用這種樣式。 但是最后,您必須在表示層上進行操作。

一種方法是使用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 = ?
             );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM