在多个表上实现MySQL查询

在多个表上实现MySQL查询,mysql,database,mysql-workbench,Mysql,Database,Mysql Workbench,我需要提出一个问题,我发现这个问题有点复杂 这是我的数据库结构: 用户将添加/输入过滤器,根据过滤器的不同,将显示相应的杂志和报纸收藏 可能的过滤器有: 杂志/报纸名称 起始日期 托德 选择结果是否仅来自杂志或报纸或两者 是否对收集的数据进行了分析 好吧,假设用户输入了一个名字,包括日期、杂志和报纸,以及只分析过的收藏,那么查询结果会是什么样的呢?我想显示收藏日期、报纸/杂志名称、起止日期。 我一直在试图弄清楚这个问题,但我有点挣扎 有人有什么建议吗?希望一切都清楚:) 谢谢 SELE

我需要提出一个问题,我发现这个问题有点复杂

这是我的数据库结构:

用户将添加/输入过滤器,根据过滤器的不同,将显示相应的杂志和报纸收藏

可能的过滤器有:

  • 杂志/报纸名称
  • 起始日期
  • 托德
  • 选择结果是否仅来自杂志或报纸或两者
  • 是否对收集的数据进行了分析
好吧,假设用户输入了一个名字,包括日期、杂志和报纸,以及只分析过的收藏,那么查询结果会是什么样的呢?我想显示收藏日期、报纸/杂志名称、起止日期。 我一直在试图弄清楚这个问题,但我有点挣扎

有人有什么建议吗?希望一切都清楚:)

谢谢

  SELECT  m.name as mag_name,
          n.name as news_paper_name,
          c.fromDate,
          c.toDate
  FROM   Collections AS C

         INNER JOIN Target AS T ON
         C.TargetID = T.TargetID

         INNER JOIN Magazine AS M ON
         T.TargetID = M.id

         INNER JOIN Newspaper AS N ON
         T.TargerID = N.id

         INNER JOIN Analysis AS A ON
         C.CollectionID = A.CollectionID

从连接的角度来看,这应该是可行的。我假设当某个东西被分析时,有一个记录在分析中,而不是一个被分析的记录。只需添加一个where子句和任何您想要筛选的信息。

您是否有一段您尝试执行的代码?从图片中,我不清楚目标表和其他表之间的ID是如何关联的;我把它设为target.type,可以是“collection”、“magazine”或“Paper”,那么ssnID是对应表的ID吗?@Joe T,我试图突出显示ID,以便更清晰。杂志和报纸是target的子类型(对不起,我不确定如何在MySQL工作台上表示它)。因此,targetID可以是报纸ID或杂志ID(PKs)。ssnID对应于newspaperID或magazineID,但它们不用于此查询。Collections不是Target的子类型,但表集合将targetID作为外键,以确定哪个是与特定集合相关的目标感谢您的回答,它确实帮助我记住了一些事情并澄清了其他事情。它只有一个问题。当我同时输入m.name和n.name时,它会给我一个空集。但是当我分别做每一个的时候,它就工作了。你对如何解决这个问题有什么想法吗?