 <p>My opinion is that you can remove the <code>george_holiday_passengers</code> and add the <code>type,age,gender</code> columns to the <code>george_holiday_users</code> as looking to it; its only a extended data of the <code>holiday_users</code> table and build query with your new database tables.</p> <pre><code>$query = $this-&gt;db-&gt;select('u.*, p.package_name, p.description') -&gt;from('george_holiday_users u') -&gt;join('george_packges p', 'u.package_id = p.id', 'left') -&gt;get(); return $query-&gt;result(); </code></pre> <p>anyway, you can achieved the result using this query.</p> <pre><code>$query = $this-&gt;db-&gt;select('u.*, hp.type, hp.name AS passengers_name, hp.age, hp.gender, p.package_name, p.description') -&gt;from('george_holiday_users u') -&gt;join('george_holiday_passengers hp', 'hp.user_id = u.id', 'left') -&gt;join('george_packges p', 'u.package_id = p.id', 'left') -&gt;get(); return $query-&gt;result(); </code></pre> <p>you should be careful about the column names because on your database there are a lot of columns with the same names, It might affect your query when your using joins, etc.</p> <p>Hope that helps.</p>