2011-01-04 8 views
2

私は自分のデータベースからすべての雇用者の名前を取得するためにデータベースを照会していますが、自分のIDがジョブテーブルに存在するものを取得したいだけです。する。codeigniterアクティブなレコードまたは一般的なmysqlのヘルプ

$this->db->select('*') 
    ->from('employers') 
->join('jobwall', 'jobwall.employers_employer_id = employers.employer_id', 'left'); 

しかしこれは、正しい結果を返しませんどのように私は、雇用者のテーブルからすべての私の雇用者を選択することができますが、彼らはjobwallテーブル内のデータを持っている場合にのみ?

+0

あなたが結果として何を得るのですか?何かエラーが出ますか? – helle

答えて

0

あなたは、WHERE句を追加する必要があります:私はこれはCodeIgniterのActiveRecordのクラスを使用して作成することがいかに複雑でわからない

$sql = ' 
    SELECT * 
    FROM employers 
    LEFT JOIN jobwall ON jobwall.employers_employer_id = employers.employer_id 
    WHERE employers.employer_id 
    IN (SELECT employers_employer_id FROM jobwall) 
'; 

$this->db->query($sql); 

を。

+0

これは2番目のarugmentが文字列を渡されても機能しません、 '' employers'''として渡す必要があります.'employers_id''現在、 'employer.employer_id 'として渡されていますので、それに一致するIDを探しています文字列は行の値ではありません –

+0

申し訳ありませんが私は誤解しました。 1秒... –

+0

ありがとう、私はこのことについての最終的な答えがあることを楽しみにしています。 –

0

私は句があるかもしれないWHEREより良いと思う:

SELECT * 
FROM employers 
LEFT JOIN jobwall ON jobwall.employers_employer_id = employers.employer_id 
WHERE jobwall.id IS NOT NULL 

これは、対応する仕事を持っていない任意の行を除外します。

jobwallテーブルにあるプライマリキーは、jobwall.idが存在しない場合は使用してください。

これはActiveRecordを使用して簡単に書き込むこともできます。

0

私は正確にあなたを理解していないが、私はあなたがleftなしjoinを使うべきだと思う:

this->db->select('*')->from('employers')->join('jobwall', 'jobwall.employers_employer_id = employers.employer_id'); 
関連する問題