我是SQL的新手,我不确定我是否正在使用条件来解决我想要回答作业的问题。
我有一个完整的SELECT语句,我只想知道我是否正确使用条件,如果代码是正确的。我无法测试它,因为我没有给出表格内容。
我想回答的问题是:生成一个结果集,显示部门名称,员工名字,员工姓氏,员工职称和员工小时工资。仅包括满足两个条件的记录:小时工资为25美元或以上的员工;和“分析师”的员工在他们的头衔中的任何地方。按部门名称排序,然后按员工标题排序。
这是表: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,只是想知道完成这个问题的正确方法。
您正在混合FROM子句中的旧式“连接”(ANSI之前的)连接和ANSI样式的连接。引用Pink Floyd,“这不会做”。 :-)
只需从FROM子句中删除“,employee”,我认为你很好:
SELECT deptName, empFirstName, empLastName, empTitle, empHourlyWage
FROM department
JOIN employee on department.deptID=employee.deptID
WHERE empHourlyWage >= 25.00
AND empTitle LIKE ‘%Analyst’
ORDER BY deptName, empTitle;
祝你好运。
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
。
有一种较旧的非ANSI语法特定于Oracle,它在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
子句中的引号。