2017-06-20 11 views
0

私は二つのテーブルを持っています。一つは「会員」で、もう一つは「貯蓄」です。体表は以下である:複数のwhere節を使用して複数の表を結合または結合するにはどうすればよいですか?

id|DomainName|DivisionName|ZoneName|MemberId|GeneralSaving 
1| hem  | raj  | raj |1111 |100 
2| hem  | raj  | bog |2222 |100 
3| edu  | dha  | dha |3333 |100 
4| edu  | dha  | nara |4444 |100 
5| busi | dha  | gazi |5555 |100 
6| busi | raj  | raj |6666 |100 

及び '節約' 表は、以下の通りである:ここ

id|DomainName|DivisionName|ZoneName|MemberId|DPS|Month|Year|AccounNo 
1| hem  | raj  | raj |1111 |100|jan |2017|11111 
2| hem  | raj  | bog |2222 |150|jan |2017|22221 
3| edu  | dha  | dha |3333 |200|jan |2017|33331 
4| edu  | dha  | nara |4444 |250|jan |2017|44441 
5| busi | dha  | gazi |5555 |300|jan |2017|55551 

、ZoneNameをはDivisionNameは、ドメイン名のサブセットである、DivisionNameのサブセットです。 DomainNameとDivisionNameが与えられ、DomainName、DivisionName、ZoneNameの3つが与えられることもあります。私は2つのテーブルを結合した後、 '会員'のGeneralSavingと '貯蓄'のDPSを掲示する必要があります、明らかに同じ月のデータを投稿することはできません。アカウントナンバーは一意ではありませんが、アカウントナンバーは2つ以上3つ以上です。今、laravel 5.2の2つのテーブルにどのように加わるか、結合できますか?

出力は以下のようになります

: ドメイン名=裾、DivisionName =ラジ、ZoneNameを=ラジ、月= 2月、年= 2017

MemberId|AccountNo|GeneralSaving|DPS 
1111 |11111 |100   |100 
2222 |22221 |100   |150 

かのドメイン名=ビジネスサービス、DivisionName = DHA、月= 2月、= 2017

MemberId|AccountNo|GeneralSaving|DPS 
5555 |55551 |100   |300 
6666 |   |100   | 
+1

を働いたのか? –

+0

DomainName、DivisionName、ZoneName、Month、Yearが与えられ、MembrId、AccountNo、GeneralSaving、DPSがすべて欲しい –

+0

いいえ、これは私たちを助けてくれません。 2つのテーブルから期待される出力を表示してください。 –

答えて

1

SELECT s.MemberId, s.AccounNo, s.DPS, m.GeneralSaving 
    FROM member m 
    JOIN savings s ON CASE WHEN $DomainName != null THEN s.DomainName = $DomainName END 
    AND CASE WHEN $DivisionName != null THEN s.DivisionName = $DivisionName END 
    AND CASE WHEN $ZoneName != null THEN s.ZoneName = $ZoneName END 

ここで$ドメイン名、$ DivisionNam .....これを試してみてくださいe、$ ZoneNameはユーザー入力です。次のように

+0

@Ziaur Ra​​hmanそれは働いたのですか? –

0

laravel 5では上記のクエリのSQLは次のようになります。

DB::table('member') 
    ->leftjoin('savings', 'savings.MemberId', '=', 'member.MemberId') 
    ->select('member.MemberId', 'savings.AccountNo', 'member.GeneralSaving', 'savings.Dps') 
    ->where('savings.DomainName', '=', $DomainName) 
    ->where('savings.DivisionName', '=', $DivisionName) 
    ->where('savings.Month', '=', $Month)->where('savings.Year', '=', $Year) 
    ->get 

このクエリはlaravel 5でテストされていて、それがあなたの予想される出力は何