/ / Oracleの複数の表から選択できないのはなぜですか? - .net、sql、oracle、oracle10g

Oracleの複数の表から選択できないのはなぜですか? - .net、sql、oracle、oracle10g

私はOracle 10g Express Edition 10.2を使用しており、Oracle.DataAccess 2.111アセンブリでC#アプリケーションから使用しています。

1つのテーブルからデータを選択できますが、複数のテーブルからデータを選択しようとすると、そのセットは空です。

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

3人とも結果が得られません。このように使用すると:

using (OracleCommand getData = new OracleCommand("select * from Table1, Table2", oracleConnection))
{
using (OracleDataReader reader = getData.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("Got record");
}
}
}

「Gotレコード」はありません(Oracle SQL Developerは同じ問合せに対して数千のレコードを表示します)。

奇妙なのは、Oracle SQL Developer 2.1から同じ3つのクエリを実行すると、すべて結果が返されるということです。

何が起こっていますか?


編集: 私は本当に愚かなので、Table2に何かがあるかどうか確認するのを忘れました。実際、Table2は現在空です。 select * from Table1 left join Table2 on Table2.Id = Table1.Id すべてがうまくいっている。

だから私の質問は少し異なります: オラクルの構文では、3つのバグのあるクエリの正しい動作は何ですか?すべてを表示するか空のセットを表示するには?そして、私は、Oracle SQL Developerとアプリケーションが同じ結果を表示していないのはまだ不思議です。

回答:

回答№1は1

スキーマとして実行中であることは確かですか?それはテーブルにアクセスできますか?おそらくSQL Developerでは、あなたは1人のユーザーとして実行しており、別の場所から実行している場合は別のユーザーとして実行しています。私は公共の同義語とテーブルの特権をチェックするだけでなく、あなたがどのユーザとして接続しているかを調べるでしょう。


回答№2の場合は0

あなたの編集を考えると、3つのバグのあるクエリはすべて内部結合をしています(最初のものはデカルト積があるので実際にはバグです)。 Table2 空です。

あなたはそれらが変更された例だけでなく、使用している正確なクエリであると確信していますか?