SQL Join возвращает пустой набор

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

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

person jorblume    schedule 17.08.2011    source источник
comment
Опубликуйте описания таблиц с типами данных.   -  person ain    schedule 18.08.2011
comment
если вы получаете пустой набор, это, скорее всего, потому, что в вашем условии соединения нет совпадений.   -  person Brian Driscoll    schedule 18.08.2011
comment
Я не вижу ничего плохого в вашем запросе, пожалуйста, опубликуйте более подробную информацию.   -  person Lucent Fox    schedule 18.08.2011
comment
@ user28162: SELECT* это опечатка? Потому что вам нужно SELECT *   -  person ypercubeᵀᴹ    schedule 18.08.2011


Ответы (1)


Первый

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')     

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

person HLGEM    schedule 17.08.2011
comment
Ах, спасибо за вашу помощь, я новичок в этом, извините за путаницу! - person jorblume; 18.08.2011
comment
Хм, когда я запускаю первый запрос, он говорит, что eID может ссылаться на более чем одну таблицу, указанную в предложении FROM, но мы указали только одну таблицу? - person jorblume; 18.08.2011
comment
псевдоним с именем таблицы, это должно быть привычкой. - person HLGEM; 18.08.2011
comment
Это решило это, большое спасибо! Это была огромная помощь, я не могу отблагодарить вас достаточно. - person jorblume; 18.08.2011