2

親データを複数の子の左結合データに結合する簡単な方法はありますか?

テーブル構造:

Table1 {id, name, data1, data2, datax}
Table2 {id, table1_id, dataA, dataB, userid}
Table3 {id, table1_id, dataD, userid}
Table4 {id, table1_id, dataE, userid}
TableUsers {userid, username, name, email}

SQL クエリ:

select Table1.*, Table2.*,Table3.*,Table4.*
from Table1 t1
left outer join Table2 t2 on t2.table1_id = t1.id
left outer join Table3 t3 on t3.table1_id = t1.id
left outer join Table4 t4 on t4.table1_id = t1.id

ここから、userid フィールドを実際のユーザー名に置き換えたいと思います。各テーブルには userid の異なるデータがあるため、TableUsers との単純な左結合は機能しません。これは、等しく設定されているテーブルにのみ影響するためです。

サブクエリでそれを行うことを考えましたが、それは非常に遅くなると思います:

select Table1.*,(select TableUser.name from TableUser where Table1.userid = TableUser.userid) as T1Name,
 Table2.*,(select TableUser.name from TableUser where Table2.userid = TableUser.userid) as T2Name,
Table3.*, (select TableUser.name from TableUser where Table3.userid = TableUser.userid) as T3Name,
Table4.*,(select TableUser.name from TableUser where Table1.userid = TableUser.userid) as T4Name
from Table1 t1
left outer join Table2 t2 on t2.table1_id = t1.id
left outer join Table3 t3 on t3.table1_id = t1.id
left outer join Table4 t4 on t4.table1_id = t1.id

これのポイントは、SQL データベースから MongoDB に移行することです。おそらく、このクエリ全体を再考する必要があります...乾杯、

チップ

4

1 に答える 1