Я работаю над таблицей в Visual Studio, которая запрашивает базу данных SQL.У меня есть параметры, чтобы пользователь мог выбрать дату в пределах начальной и конечной даты или иметь возможность ввести вместо этого имя сервера.
То, что я также хочу, это произойдет, если пользователь хочет выбрать дату Иимя сервера Я хочу, чтобы таблица возвращала только дату с этим конкретным именем сервера, но происходит то, что она возвращает все строки с выбранной датой и все строки с введенным именем сервера.У меня есть 2 строки с одинаковым именем сервера, но у одной есть дата 06/06, а у другой - 06/07.Если я выберу дату 06/07 и имя сервера: SQL1, я хочу, чтобы таблица возвращала только одну строку сервера: SQL1 с датой: 06/07.
SELECT ServerName, ServiceName, Status, Date
FROM ServicesStatus
WHERE (Date = @Date) AND (@Date BETWEEN @StartDate AND @EndDate) OR
(ServerName = @ServerName) OR
(Date = @Date) AND (@Date BETWEEN @StartDate AND @EndDate) AND (ServerName = @ServerName)
Вот чтопервый оператор WHERE выглядит, когда я выбираю 06/07/18 в качестве даты:
ServerName: ServiceName: Date:
SQL3 Service1 06/07/18
SQL4 Service2 06/07/18
SQL2 Service1 06/07/18
SQL1 Service1 06/07/18
Так выглядит второй оператор WHERE после первого ИЛИ, когда я выбираю SQL1 в качестве имени сервера:
ServerName: ServiceName: Date:
SQL1 Service1 06/07/18
SQL1 Service2 06/06/18
И ЗДЕСЬ МОЯ ПРОБЛЕМА! Это выглядит так, когда я пытаюсь выполнить третье утверждение WHERE после второго ИЛИ, потому что оно объединяет дату, которую я выбрал (06/07/18) с именем сервера, которое я ввел, которое является SQL1:
ServerName: ServiceName: Date:
SQL3 Service1 06/07/18
SQL4 Service2 06/07/18
SQL2 Service1 06/07/18
SQL1 Service1 06/07/18
SQL1 Service2 06/06/18
Я хочу это так после того, как я выберу вышеуказанные данные (SQL1 и 06/07/18), если они решат отфильтровать их по имени сервера иdate:
ServerName: ServiceName: Date:
SQL1 Service1 06/07/18
Я знаю, что это простой запрос, но я просто не могу понять его по некоторым причинам.