Member 10754595 Ответов: 2

Использование предложения where с внутренними соединениями


Почему этот запрос не дает результата с предложением where. Если я не использую предложение where, то я получаю некоторые результаты, но это не использует полностью для меня, я хочу использовать предложение where.
Кто-нибудь может мне помочь, пожалуйста?



Выберите dbo.Employees.Первое имя, dbo.Employees.Фамилия, ДБО.Подписывание.Employee_ID, dbo.Подписывание.Document_ID, dbo.Документы.Тема,Документы.Созданный,
ДБО.Документы.RevisionLevel
От dbo.Сотрудники внутреннее соединение
ДБО.Подписи на dbo.Подписывание.Employee_ID = dbo.Employees.ИДЕНТИФИКАТОР ВНУТРЕННЕЕ СОЕДИНЕНИЕ
ДБО.Документы на ДБО.Подписывание.Идентификатором document_id = ДБО.Документы.Идентификатор

где документы.Полный = 0

Что я уже пробовал:

Внутренние соединения Sql server с предложением where

2 Ответов

Рейтинг:
2

FranzBe

вы можете попробовать что-то вроде

SELECT  
       Complete
       ,COUNT(0) AS cnt
FROM  Documents
GROUP BY
       Complete
ORDER BY 2 DESC	 

это даст вам представление о значениях, которые могут иметь смысл в качестве предложения where.

Принимая во внимание ваш комментарий ниже, вы можете добавить

CASE WHEN Documents.Complete = 0 THEN 'pending'
     WHEN Documents.Complete = 1 THEN 'has completed'
     ELSE 'something strange happend'
END AS DocumentStatus


в список столбцов (и не используйте предложение where). Но из того, что вы написали, Я не уверен, как должен выглядеть ваш желаемый результат.


Member 10754595

Я пытаюсь создать отчет о том, кто завершил, а кто нет, с помощью View, чтобы я мог запускать его каждый раз

Рейтинг:
1

OriginalGriff

Если добавление предложения WHERE не возвращает строк, то это происходит потому, что нет Соединенных строк, соответствующих критериям. Мы ничего не можем сделать, чтобы исправить это: это ваши данные, и у нас нет к ним доступа.
Добавь dbo.Documents.Complete на ваш выбор список, и удалить предложение where.
Запустите запрос, и вы увидите, что ни одна из Соединенных строк, над которыми будет работать WHERE, не будет совпадать - чтобы получить желаемые результаты, вам придется посмотреть на остальные ваши данные и изолировать, почему это так, а мы не можем этого сделать!


Member 10754595

Если я вообще где документы делаю.Полный = 1
он дает результат только не работая с 0. А в моем столе лежат неполные документы

OriginalGriff

Так что же вы получаете, когда делаете то, что я предложил?
Помните, что вам нужно проанализировать проблему, прежде чем вы сможете ее решить, а это означает, что сначала нужно собрать информацию.

Member 10754595

да у меня не получилось с 0

OriginalGriff

Таким образом, это означает, что WHERE-это не ваша проблема: это соединения, которые их удаляют.
Вручную найдите строку, которая должна быть в вашем выводе - которая имеет ноль - и посмотрите на Соединенные поля - почему она не включена? Пока вы этого не знаете, вы не можете исправить это: и у меня нет доступа к вашим данным вообще!