我有三个表:Students,Friends和Packages。学生包含两列:ID和Name。朋友包含两列:ID和Friend_ID(唯一最好的朋友的ID)。套餐包含两列:ID和Salary(每月提供的工资以千美元计)
我必须写一个查询来输出那些最好的朋友得到的薪水比他们高的学生的名字。姓名必须按提供给最好的朋友的薪水金额排序。确保没有两个学生得到相同的薪水。
这是我的桌子: Student Table Friends Table Packges Table
输出应该是这样的:Output Table
答案 0 :(得分:0)
首先将所有3个带有其ID的表加入其中,而您将获得带有其ID的每个名字。现在,您已经将该朋友ID与软件包ID结合在一起,同时您将获得朋友薪水。最后过滤FRIEND_SALARY> SALARY。 我在这里使用oracle语法。希望在mysql中也能正常工作。
select TMP2.NAME name
from (SELECT TMP1.NAME,
PP.ID,
TMP1.SALARY salary,
TMP1.FRIEND_ID,
PP.SALARY friend_salary
FROM packages pp,
(SELECT *
FROM students s, friends f, packages p
WHERE S.ID = F.ID
AND S.ID = P.ID) tmp1
WHERE PP.ID = TMP1.FRIEND_ID) tmp2
where TMP2.FRIEND_SALARY>TMP2.SALARY