2017-06-20 104 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,有時會給出DomainName和DivisionName,大部分時間都會給出這三個DomainName,DivisionName,ZoneName。我需要在加入兩張表後發佈「會員」的GeneralSaving和「儲蓄」的DPS,顯然我不能發佈同一月份的數據。一個人可以有兩個或三個以上的賬號,但賬號不是唯一的。現在我怎樣才能加入或結合laravel 5.2中的兩張表?

輸出將是如下: 域名=下襬,DivisionName =拉吉,ZONENAME =拉吉,月=月,年= 2017年

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

如果域名=布絲,DivisionName = DHA,月=二月,年= 2017年

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

什麼是您預期的輸出? –

+0

DomainName,DivisionName,ZoneName,Month,Year將被給出,我想要所有MembrId,AccountNo,GeneralSaving,DPS –

+0

不,這不會幫助我們來幫助你。請顯示您期望從兩張表中輸出的結果。 –

回答

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過測試,它一直