[英]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.