合并 3 个表的查询

Query combining 3 tables

提问人:firroaga 提问时间:4/11/2014 最后编辑:Erwin Brandstetterfirroaga 更新时间:12/4/2018 访问量:59

问:

我被困在我的学校项目上。我们有 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

这是我们在 PostgreSQL 中的数据库的屏幕截图。

SQL PostgreSQL 联接

评论

0赞 Eric Hotinger 4/11/2014
发布您正在使用的整个查询和您收到的错误。确保您在适当的地方使用...AND
0赞 Kyle 4/11/2014
我从你的截图和解释中看不出任何关系。您能更清楚地说明这三个表是如何映射的吗?(也许studentId可以在过滤的推文等中找到)?
0赞 firroaga 4/11/2014
我们没有任何查询ATM
0赞 firroaga 4/11/2014
OK 重新上传截图
1赞 Ihor Romanchenko 4/11/2014
@user3511678 您必须先尝试自己编写查询。

答:

0赞 wvdz 4/11/2014 #1

似乎您可以使用入门 SQL 课程。

看起来您的数据库设计完全关闭了。为了做任何有用的事情,你需要一些将表格链接在一起的方法。查看概念和 .Primary KeyForeign Key

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

不幸的是,您自己指定的条款似乎没有任何意义,所以我将它们省略了。同样,您没有指定您需要什么,所以我不能肯定地说。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
0赞 Bharat Bhamare 12/4/2018 #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

评论

0赞 Filnor 12/4/2018
虽然这个代码片段可能会解决这个问题,但包括一个解释确实有助于提高你的帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性注释来填充你的代码,这会降低代码和解释的可读性!