#sql #oracle #subquery
#sql #Oracle #подзапрос
Вопрос:
Извините, что задаю простой вопрос, но как вы создаете этот оператор Select и каков ваш мыслительный процесс? Я перечислил следующую таблицу, которая, по моему мнению, необходима для этого оператора select.
Вопрос: Создайте инструкцию SELECT для отображения списка того, сколько раз услуга запрашивалась у каждого сотрудника. Отобразите идентификатор персонала, его имя, service_no, описание сервиса и общее количество запросов.
Table: SERVICES
Column Name || Constraints || Default Value || Data Type || Length
SERVICE_NO || Primary Key || || VarChar2 || 10
DESCRIPTION || || || VarChar2 || 50
CONTRACTOR || || || VarChar2 || 20
CCONTACT_NO || || || VarChar2 || 10
Table: SERVICE_REQUEST
Column Name || Constraints || Default Value || Data Type || Length
SR_ID || Primary Key || || Number || 10
SERVICE_NO || Foreign Key to the SERVICES table || || VarChar2 || 10
STAFF_ID || Foreign Key to the STAFF table || || VarChar2 || 10
TEC_ID || Foreign Key to the TECHNICIANS table || || VarChar2 || 10
REQUEST_DATE || || || Date ||
REQUEST_TIME || || || VarChar2 || 10
Table: STAFF
Column Name || Constraints || Default Value || Data Type || Length
STAFF_ID || Primary key || || VarChar2 || 10
SNAME || || || VarChar2 || 30
SIC_NO || Secondary key || || VarChar2 || 10
SADDRESS || || || VarChar2 || 70
SPHONE || || || VarChar2 || 8
POSITION || || || VarChar2 || 30
HIRE_DATE || || || Date ||
SALARY || || || Number || 7,2
SCH_ID || Foreign Key to the SCHOOL table || || VarChar2 || 10
Комментарии:
1. Почему бы вам не попробовать что-нибудь и не показать нам, в чем у вас проблема? Это будет здорово для вас…
2. Вам нужно будет объединить все три таблицы и использовать
group by
предложение, чтобы показать итоговые данные по каждому сотруднику / сочетанию услуг. В Интернете есть много примеров.3. Внутреннее объединение служб и персонала в таблицу service_request по их первичным ключам, группировка по тем числам, которые вы хотите получить в результате, и используйте count(*) для определения количества раз!
4.
SQL select s.staff_id, s.sname, ser.service_no, ser.description, count(ser.service_no) from staff s inner join service_request sr on s.staff_id = sr.staff_id inner join services ser on ser.service_no = sr.service_no group by s.staff_id, s.sname, ser.service_no, ser.description /
Итак, я сделал это для своего запроса, однако я не уверен, правильно ли это, поскольку мой лектор не предоставил никаких данных, и я не могу проверить, прав ли я ;-;5. Ваш запрос выглядит хорошо.
Ответ №1:
Используйте запрос.
select s.staff_id,
s.sname,
ser.service_no,
ser.description,
(select count(service_no) from staff where service_no = ser )
from service_request sr ,services ser
where s.staff_id = sr.staff_id
and ser.service_no = sr.service_no;