2016-11-04 12 views
0

私は2つのテーブルngo_extra_datango_foundation_dataを持っています。以下はテーブルの構造です。2つのテーブルを結合して2番目のテーブルの行数を表示する

id | foundation_name 
---------------------- 
1 | foundation 1 
2 | foundation 2 
3 | foundation 3 

ngo_foundation_data

ngo_extra_data

id | ngo_name   | foundation_id 
----------------------------------------- 
1 | test ngo 1  | 1 
2 | test ngo 2  | 1 
3 | test ngo 3  | 2 
4 | test ngo 4  | NULL 

今私はの番号とともに ngo_foundation_data のすべての内容を表示したいですNGO がngo_extra_dataとしてが基礎データテーブルにある。例えば、2つのNGOは、基礎の下にID 1で登録され、1つのNGOは、基盤の下にid 2で登録されています。私はこの

$collection = Mage::getModel('ngodata/foundations')->getCollection(); 
$collection->getSelect() 
    ->joinLeft(array('ngo' => 'ngo_extra_data'),'main_table.id = ngo.foundation_id',array('foundation_id')) 
    ->columns('COUNT(*) AS total_ngos') 
    ->group('foundation_id'); 

ようにMagentoの中でコードを書くことを試み、例外から離れて動作しているように見えます

id | foundation_name | number_of_ngos 
-------------------------------------------- 
1 | foundation 1  | 2 
2 | foundation 2  | 1 
3 | foundation 3  | 0 

ので、予想される出力は次のようになります。

ファンデーションの下にngoが登録されていない場合、間違った結果をもたらすようにファンデーションIDとして「null」を取ります。

あなたが同じのために私のSQLコードを与えることができれば、私は

答えて

1

あなたはあなたではないのidの0結果を得ることleft joinのでgroup by必要な対応Magentoのコードに変換することができngo_extra_dataテーブルに格納されます。

select nfd.id,nfd.foundation_name,count(ned.foundation_id) cnt 
from ngo_foundation_data nfd 
left join ngo_extra_data ned on nfd.id=ned.foundation_id 
group by nfd.id,nfd.foundation_name 
+0

どうもありがとう。今度はそれに対応するマゼンタコードを知っていますか? :P –

+0

すみません。私は分かりません。 –

+0

それは問題ではありません。私はしばらくお待ちしております。もう一度ありがとう –

関連する問題