活跃农民
- 积分
- 677
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2013-7-4
- 最后登录
- 1970-1-1
|
本帖最后由 season1016 于 2014-1-24 11:05 编辑
有个问题一直很疑惑,没想到后面一直遇到同样的问题,还是想上来请教一下大家再继续做下去了. 计算机小白没啥基础,写出来的代码好复杂,求大伙指点以SQL Scoial-Network Query Core Set Q3为例For every pair of students who both like each other, return the name and grade of both students. Include each pair only once, with the two names in alphabetical order.
我的代码是
select name1, grade1,name2,grade2
from
(select P1, P2
from (select L1.ID1 as P1, L1.ID2 as P2, L2.ID1 as P3
from Likes L1, Likes L2
where L1.ID1=L2.ID2) 这一步是cross product
where P3=P2 and P1<>P2) Couple, 为了找出A喜欢B B也喜欢A的, 并且名字不重复
(select P1 as R1ID, name as name1, grade as grade1 from Highschooler, Couple where P1=ID) R1, 这一步是为了将Couple这个关系里面第1列的ID匹配名字和年级
(select P2 AS R2ID, name as name2, grade as grade2 from Highschooler, Couple where P2=ID) R2 这一步是为了将Couple这个关系里面第2列的ID匹配名字和年级
where R1ID=P1 and R2ID=P2 and name1<name2 将匹配好的两个表格R1 R2组合起来,以Couple中列出的关系作为纽带
最后报错说Your Query Result: Query failed to execute: no such table: Couple
导致我不得不把前面Couple的语句全部复制代替后面两句里面的“Couple”,使得句法很长,而且还会让计算机的运算量增加了两倍。
所以想请教一下大家的思路是怎么样的,什么时候声明的Relation名字可以在其他的select语句中直接引用呢?
谢谢哈~~
|
|