私はこのクエリをうまく機能させています。私はFreetrialsとContactsとN:Nの関係にあり、FreetrialsとCompaniesとN:1の関係にあります。Freetrialには複数の連絡先があり、連絡先は複数のFreetrialにサインアップする可能性があります。フリートライアルは1つの会社しか持つことができず、企業は複数のフリートライアルにサインアップする可能性があります。
SELECT `freetrial`.*,`company`.name as name, `contact`.first_name,`contact`.last_name FROM `contact_freetrial`
INNER JOIN `freetrial` ON `contact_freetrial`.freetrial_id=`freetrial`.id
INNER JOIN `contact` ON `contact_freetrial`.contact_id=`contact`.id
LEFT JOIN `company` ON `company`.id=`freetrial`.company_id
これは、連絡先が2つになるまで、うまく機能します。
Id Company Contact Date
110 MCC P Sh*** 08/14/2012
110 MCC W Bu*** 08/14/2012
111 Foo x yy*** 08/14/2012
112 BAR y zz*** 08/14/2012
複数の連絡先がある場合にのみ、単一の会社/フリートライアルを表示したい。だから私は基本的にそれをこのように見せたいだけです:
Id Company Contact Date
110 MCC P Sh*** 08/14/2012
111 Foo x yy*** 08/14/2012
112 BAR y zz*** 08/14/2012
これを行うための助けをいただければ幸いです。