Я искал, но не мог полностью задать вопрос. Я также пытался выполнить несколько запросов в моем построителе запросов моей базы данных, но результат не тот, который я ожидаю. Так что это мой вопрос.Фильтрация с заданным значением AND на FK
Предположим, что у меня две таблицы, hour_entries и сотрудники;
hour_entries имеет в себе PK (obv.), А сотрудники имеют PK и FK (этот внешний ключ относится к ПК таблицы 1).
Скажем, столбцы в таблице hour_entries - это HourType (программирование, чистка и т. Д.), Описание и TotalHours (5, 2 и т. Д.). И FK, который называется EmployeeID.
В этой другой таблице (сотрудники) у вас есть только регулярная информация о сотруднике. Firstname, фамилия и т.д ..
Когда я выполнить запрос, как так
SELECT FirstName, LastName, JobType, Description FROM hour_entries
LEFT (OUTER) JOIN employees on employees.EmployeeID = hour_entries.EmployeeID WHERE UPPER(Description) LIKE UPPER('%Bla%') OR UPPER(HourType) LIKE UPPER('%Bla%') AND EmployeeID = 4;
Это, кажется, чтобы дать мне информацию обратно, которая соответствует проверки для описания и hourtype. Но он также возвращает строки с другим EmployeeID.
Я хочу информацию сотрудника с данным EmployeeID. Поэтому, если вы поместите это в if-statement, это будет выглядеть так.
если (EmployeeID == givenID & & Описание == "Bla" || HourType == "Bla")
Если описание не является матч он также может выглядеть, если hourtype еще матч. Если employeeID не соответствует, я не хочу, чтобы он возвращал любую строку. Но это так и есть.
Это еще возвращает мне строки, столбцы только имеет значение NULL –
Это список всех hour_entries где EmployeeID = 4 и (Описание соответствуют шаблону или HourType соответствуют шаблону), и если в EmployeeID = 4 нет записей для сотрудников - тогда FirstName, LastName и JobType имеют значение NULL. –