簡體   English   中英

為什么不能在Oracle中從多個表中進行選擇?

[英]Why cannot I select from more than one table in Oracle?

我正在使用Oracle 10g Express Edition 10.2,並且從帶有Oracle.DataAccess 2.111程序集的C#應用​​程序中使用它。

我可以從一個表中選擇數據,但是如果我嘗試從多個表中選擇數據,則該集合為空。

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”(而Oracle SQL Developer顯示同一查詢的數千條記錄)。

奇怪的是,如果我從Oracle SQL Developer 2.1運行相同的三個查詢,那么所有查詢都將返回結果。

發生了什么?


編輯:我真的很笨,我忘了檢查一下Table2中是否有東西。 實際上,Table2當前為空。 select * from Table1 left join Table2 on Table2.Id = Table1.Id顯示一切。

因此,我的問題將有所不同:給定Oracle語法,三個“錯誤”查詢的正確行為是什么? 顯示所有內容還是顯示空集? 而且我仍然想知道為什么Oracle SQL Developer和我的應用程序沒有顯示相同的結果。

您確定您正在以可訪問表的模式運行//以該模式運行嗎? 也許在SQL Developer中,您以一個用戶身份運行,而在其他地方運行時,您以另一個用戶身份運行。 我將檢查表上的公共同義詞和特權,並找出您要連接的用戶身份。

根據您的編輯,三個錯誤查詢都在進行內部聯接(第一個錯誤確實是錯誤,因為它正在執行笛卡爾積),因此如果Table2為空,則不應返回任何內容。

您確定這些是您正在使用的確切查詢,而不僅僅是已修改的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM