Я пытался удержать запрос, чтобы захватить столбцы для 3 таблиц, но я продолжаю получать несоответствующие строки.Какое предложение JOIN или WHERE мне нужно?
Это мои таблицы:
Сообщения
- MESSAGEID
- отправитель (может быть либо CUSTOMERID или EmployeeID) - приемник (может быть либо CUSTOMERID или EmployeeID)
(Примечание : для каждого сообщения он будет содержать только 1 клиента и 1 сотрудника, т. е. клиент не взаимодействует с пользователем, а сотрудники также не сообщают друг другу)
Заказчик
- CUSTOMERID
Сотрудник
- EmployeeID
- DepartmentID
ОТДЕЛ
- departentID
- departmentName
Для конкретного клиента с CUSTOMERID = 5, я хочу, чтобы выяснить, что такое DepartmentName сотрудника, с которым они разговаривали.
Мои Intial attemp на это:
SELECT * FROM Messages,Employee, Departmnet,
WHERE sender = '5' OR receiver = '5'
AND (Employee.employeeID = Messages.sender OR Employee.employeeID = Messages.Receiver)
AND Employee.departmentID = Department.DepartmentID;
Однако это возвращает путь больше строк, чем ожидалось. Я думаю, что это связано с тем, что отправитель или получатель потенциально может быть идентификатором employeeID.
Мое второе предположение, возможно, мне нужно присоединиться к столам, но у меня нет большого опыта в этом. Если бы кто-нибудь мог показать мне или сказать мне, как выполнить этот запрос, я был бы признателен.
сообщения некоторых выборочные данные и желаемый результат. – Mihai
customerId и employeeId - это только идентификаторы auto increment, или вы удостоверились, что клиент и сотрудник не могут иметь одинаковый идентификатор? – rakeshjain
@rakeshjain они не являются значениями автоматического увеличения, а способ создания Сообщений гарантирует, что Клиент будет только сообщать сотруднику, а сотрудник будет отправлять сообщение только клиенту. –