Попытка понять, ЧТО СОЕДИНЯЕТ и когда использовать их в задаче домашней работы - PullRequest
1 голос
/ 22 апреля 2019

Я новичок в 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, просто хочу знать, как правильно ответить на этот вопрос.

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Вы смешиваете "соединения в старом стиле в предложении FROM" (до ANSI) и соединения в стиле ANSI.Цитируя Пинк Флойд, «Это не подойдет».: -)

Просто удалите ", сотрудник" из предложения FROM, и я думаю, что вы хороши:

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;

Удачи.

0 голосов
/ 22 апреля 2019

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...