【问题标题】:Query combining 3 tables查询组合3个表
【发布时间】:2014-05-24 17:52:48
【问题描述】:

我被我的学校项目困住了。我们有 3 张桌子:

filteredtweets(Place, SoortOV, Comment, Time, Date), 
rooster(Lesid, Timestart, Timeend), 
student(studentid, woonplaats, vervoersmiddel)

我们想要一个带有这个 select 语句的列表,但我猜有问题:

SELECT student.studentid, student.woonplaats, rooster.Lesid, 
filteredtweets.SoortOV, filteredtweets.Date, filteredtweets.Comment

我们需要基于 2 个WHERE 子句得到结果:

WHERE filteredtweets.Place = student.woonplaats
WHERE filteredtweets.Time [is 30 minutes in range of] rooster.Timestart

Here is the screenshot of our database in PostgreSQL.

【问题讨论】:

  • 发布您正在使用的整个查询以及您收到的错误。确保在适当的地方使用AND...
  • 从你的截图和解释中看不出任何关系。您能否更清楚地了解这三个表是如何映射的? (也许 studentId 在过滤的推文等中找到)?
  • 我们没有任何查询atm
  • ok 重新上传截图
  • @user3511678 您必须先尝试自己编写查询。

标签: sql postgresql join


【解决方案1】:

看来您可以使用 SQL 入门课程。

看起来您的数据库设计完全不正确。为了做任何有用的事情,您需要某种方式将表格链接在一起。查看Primary KeyForeign Key 的概念。

我猜 - 我不知道,因为你没有指定你需要什么 - 你正在寻找类似下面的查询的东西。对于这个查询,我假设存在一个表 student_les,它将 student 链接到 rooster,并且过滤的推文有一个列 studentid,以便我们知道哪个学生发送了这条推文。

不幸的是,您指定的WHERE 子句似乎没有任何意义,所以我将它们排除在外。再说一次,你没有具体说明你需要什么,所以我不能肯定。

SELECT student.studentid, student.woonplaats, rooster.Lesid, 
filteredtweets.SoortOV, filteredtweets.Date, filteredtweets.Comment
FROM student, rooster, filteredTweets, student_les
WHERE student.lesId = student_Les.lesId
AND student_les.lesId = rooster.lesId
AND filteredtweets.studentid = student.studentid

【讨论】:

    【解决方案2】:

    你可以用这个

    SELECT
      s.studentid,
      s.woonplaats,
      s.Lesid,
      f.SoortOV,
      f.Date,
      f.Comment 
     FROM
      filteredtweets f 
      INNER JOIN
          rooster r 
           ON f.Time >= r.Timestart::TIMESTAMP + (30 || ' minutes')::interval 
           OR f.Time <= r.Timestart::TIMESTAMP + (30 || ' minutes')::interval 
     INNER JOIN
         student s 
           ON f.Place = s.woonplaats
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
    猜你喜欢
    • 1970-01-01
    • 2021-11-12
    • 2015-06-21
    • 2017-04-07
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多