在sql中左外连接

时间:2012-11-02 11:34:43

标签: sql database oracle left-join oracle9i

我最初在应用程序中有两个表。他们是

user                       
------------------------      
user_id                      
column1                         
column2
..

Columnn

user_account_info

user_id                   
account_number (can have multiple a/c number on single user_id)        
column1                      
column2          
..            
Columnn  

查询就像

SELECT u.column1, uai.column1, uai.Keycolumn2
        FROM user u
        LEFT OUTER JOIN user_account_info uai on u.user_id  = uai.user_id

但稍后会添加新表user_account_map并更改user_account_info

用户

user_id                 
column1                                        
column2             
..               
Columnn   

user_account_info

account_number (can have multiple a/c number on single user_id)                       
column1                  
column2               
..               
Columnn 

user_account_map

user_id                      
account_number (can have multiple a/c number on single user_id)                
column1              
column2 

如何重写查询以匹配上一个查询的输出。  写得好吗

SELECT u.column1, uai.column1, uai.Keycolumn2
FROM user u
LEFT OUTER JOIN user_account_map uam on u.user_id  = uam.user_id
LEFT OUTER JOIN user_account_info uai on u.account_number  = uai.account_number

2 个答案:

答案 0 :(得分:2)

从模糊问题中我可以理解,我认为您只需要加入三个表,因为user_id中有多个table user_account_map,您需要GROUP BY那个领域:

SELECT u.column1, uai.column1, uai.Keycolumn2, MAX(account_number) AS accNo
FROM user u 
LEFT OUTER JOIN user_account_info uai USING(user_id)
LEFT OUTER JOIN user_account_map uma  USING(user_id)
GROUP BY uma.user_id

或者只是简单地使用双重条件加入包含account_number字段的两个表:

SELECT u.column1, uai.column1, uai.Keycolumn2
FROM user u 
LEFT OUTER JOIN user_account_info uai USING(user_id)
LEFT OUTER JOIN user_account_map uma ON uma.account_number = uai.account_number AND uma.user_id = u.user_id 

答案 1 :(得分:1)

我的查询有自己的答案。我询问的查询是否正确,是正确的查询 也就是说,

SELECT u.column1, uai.column1, uai.Keycolumn2
FROM user u
LEFT OUTER JOIN user_account_map uam on u.user_id  = uam.user_id
LEFT OUTER JOIN user_account_info uai on u.account_number  = uai.account_number
相关问题