SQL Join возвращает пустой набор - PullRequest
0 голосов
/ 18 августа 2011

У меня проблемы с моим SQL-соединением.Я хочу объединить две таблицы с определенным идентификационным номером и в течение определенного периода времени, но я просто продолжаю возвращать пустой набор.Я хочу получить соответствие между обеими таблицами по идентификационным номерам, а также отфильтровать его по времени, которое также называется «Срок».Я считаю, что термин находится в таблице ProcInfo.Есть идеи, что я делаю не так?

    SELECT*
    FROM tblPernfo INNER JOIN tblProcInfo ON tblProcInfo.eID=tblPernfo.eID
    WHERE Term In ('1st Sum 2010')
    ORDER BY Term;

1 Ответ

3 голосов
/ 18 августа 2011

Первый

SELECT (specify columns here)     
FROM tblPernfo 
INNER JOIN tblProcInfo ON tblProcInfo.eID=tblPernfo.eID     
WHERE Term In ('1st Sum 2010')     
ORDER BY Term; 

Использование select * очень плохая практика.Это вызывает проблемы с производительностью.

Почему вы используете IN?= должно работать.

Теперь выясним, почему записи не возвращаются.Это простой набор данных, поэтому есть только несколько возможностей.Во-первых, в tblProcInfo нет записей, соответствующих записям в tblPernfo.Вы можете подтвердить или исключить эту возможность, запустив оператор без предложения where.

SELECT (specify columns here)     
FROM tblPernfo 
INNER JOIN tblProcInfo ON tblProcInfo.eID=tblPernfo.eID   

Если он возвращает записи, предложение where является проблемой, если он не присоединяется к проблеме.Затем выполните это (или замените tblProcInfo idf, который является таблицей, содержащей столбец Term:

SELECT (specify columns here)     
FROM tblPernfo   
WHERE Term In ('1st Sum 2010')     

Если это возвращает данные, а первый запрос возвращает записи, то единственная оставшаяся возможность состоит в том, что ввторая таблица, которая соответствует первой таблице для этого конкретного значения.

...