這是完全可能的。
如果您有給定帳戶的多個地址或給定地址的多個帳戶,那麼您可能會得到更多的行,而不僅僅是地址或帳戶表中的內容。
考慮:
Account
id | ... | cityid
4 | ... | 12
5 | ... | 12
6 | ... | 13
7 | ... | 14
Address
id | ... | cityid
2 | ... | 12
3 | ... | 13
4 | ... | 14
有了您的加入,您可以獲得:
Account Address
id | ... | cityid | id | ... | cityid
4 | ... | 12 | 2 | ... | 12
5 | ... | 12 | 2 | ... | 12
6 | ... | 13 | 3 | ... | 13
7 | ... | 14 | 4 | ... | 14
所以,你看到有4個記錄返回,即使有3條記錄地址,與唱片Address.2重複。
如果外鍵關係被顛倒過來,這可能是另一種方式。
而這實際上是關係數據庫的核心功能,使用外鍵關係輸入的數據不需要重複輸入數據。
您可以通過選擇僅加入的第一個(最低id)值來限制行。這通常涉及到創建一個臨時表,這是一個練習,我將留給Oracle專家,因爲我認爲Sybase的語法因爲這是不同的(並且需要在存儲過程中完成,yick)。
我發現自己想知道,除了您所描述的可能會更有可能解決您的問題之外,是否會對架構有一個稍微不同的解釋。
這是HQL查詢,你能否給我們使用映射?從HQL查詢中,加入是使用cityid而不是cust ID完成的。 – TheEwook
thx theewook我寫錯了 –
爲什麼名爲「地址」的表將作爲城市查找表?看起來「地址」表很可能每個城市有多個記錄,可能不是您應該使用的表格。 – GriffeyDog