我的SQL加入有问题。我想在特定的ID号和特定的时间范围内加入两个表,但我只是继续得到一个空集。我想得到的是ID号上两个表之间的匹配,并且还按时间过滤它,也称为" Term"。我认为,术语在ProcInfo表上。关于我做错什么的任何想法?
SELECT*
FROM tblPernfo INNER JOIN tblProcInfo ON tblProcInfo.eID=tblPernfo.eID
WHERE Term In ('1st Sum 2010')
ORDER BY Term;
答案 0 :(得分:3)
第一
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')
如果返回数据并且第一个查询返回了记录,则剩下的唯一可能性是第二个表中没有与该特定值的第一个表匹配的记录。