我使用的是Oracle10gExpressEdition10.2,它来自一个C应用程序和Oracle.dataaccess 2.111程序集。
我可以从一个表中选择数据,但是如果我尝试从多个表中选择数据,则集合为空。
select * from Table1
很好,但是:
select * from Table1, Table2
select * from Table1, Table2 where Table1.Id = Table2.Id
select * from Table1 inner join Table2 on Table1.Id = Table2.Id
三个都不会有结果吗?当这样使用时:
using (OracleCommand getData = new OracleCommand("select * from Table1, Table2", oracleConnection))
{
using (OracleDataReader reader = getData.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("Got record");
}
}
}
不会有“got record”(而OracleSqlDeveloper会为同一查询显示数千条记录)。
奇怪的是,如果我从OracleSQLDeveloper2.1运行相同的三个查询,所有查询都会返回结果。
发生什么事了?
编辑:
我真的很蠢,我忘了检查表2中是否有东西。实际上,表2当前为空。做
select * from Table1 left join Table2 on Table2.Id = Table1.Id
一切都很好。
所以我的问题会有点不同:考虑到Oracle语法,三个“错误”查询的正确行为是什么?显示所有内容还是显示空集?我仍然在想,为什么OracleSQL开发人员和我的应用程序没有显示相同的结果。