0

私はこれらのテーブルを持っています

cat(カテゴリのメインデータを保持)id_cat、元の名前
cat_lang(さまざまな言語で猫の詳細を保持)lang、id_cat、local_name
cat_media(猫メディアを保持)id_cat、id_media、usage(ベースまたはビッグ)
media(画像情報を保持) id_media、name、path

このように、選択したカテゴリのサブカテゴリを返すクエリを作成しました。

$this->db->select('*')
         ->from('cat')
         ->join('cat_lang','cat.id_cat = cat_lang.id_cat','left outer')
         ->join('cat_media','cat.id_cat= cat_media.id_cat','left outer')             
         ->join('media','cat_media.id_media=media.id_media','left outer')
         ->where('cat.id_parent',$id_cat) //comes from function             
         ->where('cat_lang.lang',$lang)
$query = $this->db->get();

その後、大きな画像を次のようにフィルタリングします。

  $sub_cats = $query->result_array(); 
  $data['sub_cats']= array();
  foreach($sub_cats as $key => $value)
  {
    if($value['usage'] == 'base' OR $value['usage'] == null)
    $data['sub_cats'][] = $value;
  }

$value['usage'] == nullトラブルが始まるところです。一部のカテゴリに問題があり、ベースイメージが添付されておらず、上記のクエリは条件が一致しなかったため、このカテゴリを返しませんcat.id_cat= cat_media.id_cat

結果テーブルを取得したい:

id_cat:1 , ..., id_media = 2, usage=big
id_cat:2 , ..., id_media = null, usage=null

したがって、結果テーブルにnullとしてそれらが必要です。どうやってやるの?ここに何時間も積み重ねられました。助けてくれてありがとう。

4

2 に答える 2

0

left outer join単純な の代わりに を使用しjoinます。

于 2012-05-28T18:32:22.073 に答える
0

不可能なことに挑戦していることに気づきました。画像が添付されているカテゴリを取得しようとしていますが、画像が添付されていないカテゴリも尋ねています。カテゴリを作成しているときに、デフォルトのプレビューなしの画像を添付していることを確認しました。これで、クエリが機能します。回答ありがとうございます。

于 2012-06-02T13:03:28.230 に答える