0

アプリケーションには最初に 2 つのテーブルがあります。彼らは

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

Columnn

ユーザーアカウント情報

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   

ユーザーアカウント情報

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
4

2 に答える 2

2

あなたのあいまいな質問から私が理解できることから、私はあなたが3つのテーブルを結合するだけでよいと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

または、フィールドを含む 2 つのテーブルをaccount_numberdouble 条件で単純に結合します。

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 
于 2012-11-03T14:29:37.627 に答える
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
于 2012-12-21T09:02:53.903 に答える