2016-08-11 5 views
0

私の最初のクエリでは、statusopenchannel_id23で、列がfield_id_299になっているすべてのレコードをループしています。フィールドfield_id_299は、別のchannelの場合はentry_idです。CodeIgniterアクティブレコード。 2つのクエリを1つにマージしますか?

2番目のクエリでは、このfield_id_299 AS entry_idが使用され、列はfield_id_36になります。

これをすべて1回のクエリで実行できますか?

$query = ee()->db->select('cd.field_id_299') 
      ->from('exp_channel_titles AS ct') 
      ->join('exp_channel_data AS cd', 'ct.entry_id = cd.entry_id', 'left') 
      ->where('ct.status', 'open') 
      ->where('ct.channel_id', '23')     
      ->get(); 

$query = ee()->db->select('field_id_36') 
      ->from('exp_channel_data') 
      ->where('entry_id', $entry_id) 
      ->get(); 
+0

の下に試してみてください。 'exp_channel_data からfield_id_36を選択する場合におけるたentry_id(exp_channel_titlesのCT から選択cd.field_id_299 がct.entry_id = cd.entry_id にexp_channel_data CDに参加左\t \t \t ここct.status = 'オープン' とCHANNEL_ID = 23) ; ' – jagad89

答えて

0

私はわからない..しかし、あなたはmysqlのクエリの下に実行され、これはあなたの望ましい結果かではないことを私に確認することができ

$query = ee()->db->select('cd1.field_id_36') 
      ->from('exp_channel_titles AS ct') 
      ->join('exp_channel_data AS cd', 'ct.entry_id = cd.entry_id', 'left') 
      ->join('exp_channel_data AS cd1', 'cd.field_id_299 = cd1.entry_id', 'left') 
      ->where('ct.status', 'open') 
      ->where('ct.channel_id', '23')     
      ->get(); 
関連する問題