2013-08-22 169 views
1

我想寫一個MySQL查詢,但我有困難的時候寫它,它涉及到3個表!編寫MySQL查詢,涉及3個表

table 1 - Invoice table - Has a client id, credit id, invoice id and commission subtotal 
table 2 - Credits table - Has a client id, credit id and commission amount (same as commission subtotal) 
table 3 - Agents table - Has a client id and agent id 

我想創建代理佣金金額從信用表每個信用卡ID invoice id上的列表。

我真的希望這是有道理的。

這是我有那些遠:

select cfi.commissionamount 
     from invoice ii 
     inner join clientagent cli 
     on ii.client = cli.clientid 
     inner join clientagent cl 
     on ii.client = cl.clientid 
     left outer join creditfee cfi 
     on cfi.client = ii.client 
     and (cfi.issuedate BETWEEN ii.startdate AND ii.enddate) 
     where ii.invoiceid = cfi.invoiceid 
     and cli.clientagentid = cl.clientagentid 

,但得到返回的唯一事情是一羣從我的發票表隨機行....就如何解決這一問題的任何想法?

任何幫助或步在正確的方向將是一個巨大的幫助。

+0

查看錶結構將是有用的。 – Tommassiov

+0

您的預期產出是多少? – cmorrissey

+0

您的兩個加入clientagent的任何原因具有相同的條件?如果連接條件相同,則加入同一個表沒有意義。 –

回答

1

我覺得你找這個,但你需要回答上面我們可以幫助您更多的問題,當你有你的名字空間提供準確的表結構。

SELECT cli.agentid, SUM(cfi.commissionamount) 
    FROM invoice AS ii 
     INNER JOIN clientagent AS cli 
      ON ii.clientid = cli.clientid 
     LEFT OUTER JOIN creditfee AS cfi 
      ON cfi.clientid = ii.clientid AND (cfi.issuedate BETWEEN ii.startdate AND ii.enddate) 
     WHERE ii.invoiceid = cfi.invoiceid AND cli.clientagentid = cl.clientagentid 
     GROUP BY ii.clientid