我是SQL的新手,我不确定我是否正确使用条件来回答我要回答的家庭作业问题。
我有一个完整的SELECT语句,我只是想知道我是否正确使用了条件,如果代码完全正确。我无法测试它,因为我没有得到表内容。
我要回答的问题是:生成一个结果集,显示部门名称,员工名字,员工姓氏,员工头衔和员工小时工资。仅包括同时满足两个条件的记录:时薪为25美元或以上的员工;以及标题中随处可见“ Analyst”的员工。按部门名称排序,然后按员工职务排序。
这是表格:https://imgur.com/a/sr8EHCn
SELECT deptName, empFirstName, empLastName, empTitle, empHourlyWage
FROM department, employee
JOIN employee on department.deptID=employee.deptID
WHERE empHourlyWage >= 25.00
AND empTitle LIKE ‘%Analyst’
ORDER BY deptName, empTitle;
我认为我没有正确使用JOIN,只是想知道完成此问题的正确方法。
答案 0 :(得分:1)
您正在混合使用老式的“ FROM子句中的联接”(ANSI之前的联接)和ANSI样式的联接。引用平克·弗洛伊德(Pink Floyd)的话,“这不会做”。 :-)
只需从FROM子句中删除“,雇员”,我认为你很好:
p12
好运。
答案 1 :(得分:0)
SQL查询通常大致如下所示:
SELECT <columns and expressions of what you want to know>
FROM <a table>
INNER JOIN <another table>
ON <clause that relates first table to this table>
WHERE <zero or more predicates to filter on>
ORDER BY <columns to sort by>
因此,在您的FROM
子句中,只需取出employee
。
有一种特定于Oracle的较旧的非ANSI语法,该语法将逗号分隔的表列表放在FROM
子句中,并且不使用JOIN
关键字。我建议您不要使用它,但是如果您使用它,查询将如下所示:
SELECT deptName, empFirstName, empLastName, empTitle, empHourlyWage
FROM department, employee
WHERE department.deptID=employee.deptID [<-- JOIN condition is here]
AND empHourlyWage >= 25.00
AND empTitle LIKE '%Analyst'
ORDER BY deptName, empTitle;
此外,请注意empHourlyWage
子句中的引号。