我正在處理在特定條件下從多個表中繪製數據的查詢。結果集中的列必須包含1-3類地址的值。這是一個典型的1個贊助人到1,3個贊助人地址關係。基於其他值從多行中選擇相同的列
我的結果集中需要三個地址塊。 (這是一個系統轉換從ILS到另一個在我們的學術圖書館。)
每個人,從我所知道的,有ADDRESS_TYPE='1'
在PATRON_ADDRESS
表中的行,這是一個街道地址
一些也有一個Address_Type = '2'
,這有時只是一個campusmailbox
號碼,有時是一個真實地址
大多數有一個Address_Type = '3'
,這是電子郵件地址。 是的,我同意。這是源系統中糟糕的數據庫設計。
我有這樣一個數據結構,我需要填充:
PATRON name, primary address street city state zip (Address_type 1), secondary address street city state zip (Address_Type 2) and an email field.
注意,而底層的數據庫是Oracle,在我目前的角色,我只能通過MS Access 2007中訪問數據(bleah!)。所以我可能知道我可以在Oracle中做的事情,我認爲它不適用於Access SQL。
因此,我需要從patron_id
字段的同一表中抽取行,PATRON_ADDRESS
。低於
此查詢對於每一個patron_ID
和address_type
在Patron
表,我需要從Patron_Address
表有條件地選擇列值。這個查詢是做我需要的嗎?
Select P.PATRON.P.PATRON_ID,P.PATRON.LAST_NAME,
A1.StrretAddress_line1,A1.StreetAddress_Line2,etc.,A2.StreetAddress_Line1, A2.StreetAddress_Line2, A3.StreetAddress_Line1
from PATRON P, PATRON_ADDRESS A1, PATRON_ADDRESS A2, PATRON_ADDRESS A3
where (P.PATRON_ID = A1.PATRON_ID and
A1.ADDRESS_TYPE = '1')
and
(P.PATRON_ID = A2.PATRON_ID and
A2.ADDRESS_TYPE = '2')
and
(P.PATRON_ID = A3.PATRON_ID and
A3.ADDRESS_TYPE = '3');
我意識到,這將是相當低效的,但我不知道我怎麼會參考各個列,如果我做了一個內部聯接的PATRON_ADDRESS
爲address type = 1
數據,以及PATRON_ADDRESS
涉及兩個外連接來獲得分別爲address type = 2
和address_type = 3
數據。謝謝。
你能澄清你的數據結構嗎? 「PATRON名稱,主要地址街道城市州郵政編碼(Address_type 1),次要地址街道城市州郵政編碼(Address_Type 2)和一個電子郵件字段。」那是4場?此外,您是否可以展示幾行示例數據和您期望的結果。 – JNevill