在多个表上提出MySQL查询

时间:2013-10-19 22:49:17

标签: mysql database mysql-workbench

我需要提出一个我发现有点复杂的查询。

这是我的数据库结构:

enter image description here

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

可能的过滤器是:

  • 杂志/报纸名称
  • FROM日期
  • TODATE
  • 选择结果仅来自杂志或报纸或两者
  • 如果收集品已经过分析

那么,假设用户输入了一个名称,两个日期,杂志和报纸以及只有已经分析的集合,查询将如何?我想显示收集日期,报纸/杂志的名称,来自和日期。 我一直试图弄清楚查询,但我有点挣扎。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

  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子句以及您想要过滤的任何信息。