提问人:firroaga 提问时间:4/11/2014 最后编辑:Erwin Brandstetterfirroaga 更新时间:12/4/2018 访问量:59
合并 3 个表的查询
Query combining 3 tables
问:
我被困在我的学校项目上。我们有 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
答:
0赞
wvdz
4/11/2014
#1
似乎您可以使用入门 SQL 课程。
看起来您的数据库设计完全关闭了。为了做任何有用的事情,你需要一些将表格链接在一起的方法。查看概念和 .Primary Key
Foreign Key
我猜 - 我不知道,因为你没有指定你需要什么 - 你正在寻找类似于下面查询的东西。对于此查询,我假设存在一个将 a 链接到 的表 student_les,并且 filteredtweets 有一列 ,以便我们知道哪个学生发送了这条推文。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
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
虽然这个代码片段可能会解决这个问题,但包括一个解释确实有助于提高你的帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性注释来填充你的代码,这会降低代码和解释的可读性!
评论
AND