Контекст: Это для гипотетической компании по прокату автомобилей. Этот вопрос касается двух таблиц. Они называются «Таблица персонала» и «Таблица сотрудников сотрудников по продажам». Первая таблица включает информацию о таких сотрудниках, как DOB и еще много чего. Вторая таблица содержит следующую информацию:MS Access SQL: не включать в число
Staff_ID = Уникальный код сотрудника Sale_ID = Уникальный код конкретного Сейла SaleStaffMember_AssociatedWithPurchase =, был ли сотрудник связан с первоначальной продажей или просто возвращение автомобиля.
Две таблицы имеют одинаковый Staff_ID.
Я написал следующий SQL:
SELECT [staff table].staff_id as [Staff ID], Count([sale staff member table].staff_id) AS [Number of Rentals]
FROM [staff table]
LEFT JOIN [sale staff member table] ON [sale staff member table].staff_id = [staff table].staff_id
WHERE [sale staff member table].staff_id IS NULL or [sale staff member table].staff_id IS NOT NULL
GROUP BY [staff table].staff_id
Что это делает, что он перечисляет каждый сотрудник (некоторые сотрудники не сделали никаких продаж и, следовательно, не в таблице сотрудника продажи) и рядом их он перечисляет сумму продаж они составили:
Моя проблема заключается в том, что сотрудник указал здесь технически не сделал каких-либо продаж, однако он внесен в список, сделав 1, когда он должен иметь 0 , Я понимаю, почему, поскольку я ничего не писал о связанном с полем покупки в SQL. Я попытался сделать это, и, насколько я мог бы получить, это было полное удаление этого элемента из результата запроса. Тем не менее, то, что я хочу сделать, это в основном говорит:
«Если сотрудник не связан с покупкой, не включает в себя эту конкретную запись в графе»
Но я понятия не имею, как это сделать , Я попробовал несколько смешных решений и посмотрел на это, но в конечном итоге я не смог найти решение. Я уверен, что это относительно просто, но за последние несколько дней я только что выбрал SQL, поэтому пока не знаю.
Edit: Просто понял, что я где заявление буквально ничего не делает, ха-ха, но это ничего не решает, он просто делает код немного аккуратнее:
мой пересмотренный код:
SELECT [staff table].staff_id as [Staff ID], Count([sale staff member table].staff_id) AS [Number of Rentals]
FROM [staff table]
LEFT JOIN [sale staff member table] ON [sale staff member table].staff_id = [staff table].staff_id
GROUP BY [staff table].staff_id
Спасибо!
Edit: окончательный ответ
SELECT [Staff Table].Staff_ID AS [Staff ID], SSM.[Number of Rentals] AS [Number of Rentals]
FROM [staff table]
LEFT JOIN (SELECT Staff_ID, nz(COUNT(Staff_ID),0) as [Number of Rentals]
FROM [Sale Staff Member Table]
WHERE SaleStaffMember_AssociatedWithPurchase = 1
GROUP BY Staff_ID) AS SSM
ON [Staff Table].Staff_ID = SSM.Staff_ID
Этот запрос вернет всех сотрудников, которые произвели продажи и количество произведенных ими продаж; однако, я хочу, это запрос, который показывает ВСЕ сотрудников и продажи, которые они сделали, даже если они должны быть 0. – BlueRhapsody
Я должен еще раз указать, что запрос, который у меня выше, показывает каждого сотрудника и их счет продажи, даже если оно равно 0, но одна проблема заключается в том, что он показывает, что сотрудник S000000976 совершил продажу, даже если он не был связан с покупкой. Я хочу, чтобы запрос не учитывал, где появляется идентификатор, если сотрудник не связан с покупкой. – BlueRhapsody
Пожалуйста, проверьте отредактированный запрос, если он может решить вашу проблему. – DeathWish