4

2 つのクエリがあります。

$genres = $this->db->select('Group_Concat(intGenreId) strDJGenres')
                                ->from('tblDJGenres')
                                ->where('intDJId', $this->session->userdata('non_admin_userid'))
                                ->get()
                                ->row();

            $results = $this->db->select('tblTracks.*, tblGenres.strName as strGenreName')
                                ->from('tblTracks')
                                ->join('tblGenres', 'tblTracks.intGenreId = tblGenres.intGenreId', 'left')
                                ->where_in('tblTracks.intGenreId', $genres->strDJGenres)
                                ->get()
                                ->result();

最初のクエリは次のような文字列を返します

'1,2,3,4,8,6,5,7,45,66'

これは、2 番目のクエリの where_in 句で使用しています。問題は、この文字列を使用して、次のような SQL を記述していることです。

SELECT `tblTracks`.*, `tblGenres`.`strName` as strGenreName FROM (`tblTracks`) LEFT JOIN `tblGenres` ON `tblTracks`.`intGenreId` = `tblGenres`.`intGenreId` WHERE `tblTracks`.`intGenreId` IN ('1,2,3,4,8,6,5,7,45,66') 

引用符で囲むと、単一の値として扱われます。2 番目のクエリを希望どおりに実行するにはどうすればよいですか? すなわち

.... where `tblTracks`.`intGenreId` IN (1,2,3,4,8,6,5,7,45,66) 
4

2 に答える 2