[eluser]Muser[/eluser]
Hi, I need to contruct a query with multiple left join and I am using the active record class to build the SQL statement. For some reason, the query executed do one LEFT JOIN, and three JOIN's.
Code:
$this->db->select(
'projectes.idProjecte,
projectes.nom_'.$this->config->item('lang_selected').' AS nom,
projectes.descripcio_'.$this->config->item('lang_selected').' AS descripcio,
projectes.data_inici,
projectes.data_finalitzacio,
projectes.webs_relacionades,
projectes_valorconservacio.nom_'.$this->config->item('lang_selected').' AS valorconservacio_nom,
projectes_tipusespai.nom_'.$this->config->item('lang_selected').' AS tipusespai_nom,
projectes_ambitactuacio.nom_'.$this->config->item('lang_selected').' AS ambitactuacio_nom,
projectes_tipusaccio.nom_'.$this->config->item('lang_selected').' AS tipusaccio_nom
',FALSE);
$this->db->from('projectes');
$this->db->join('projectes_valorconservacio', 'projectes.idValorConservacio = projectes_valorconservacio.idValorConservacio','left');
$this->db->join('projectes_tipusespai','projectes.idTipusEspai','projectes_tipusespai.idTipusEspai','left');
$this->db->join('projectes_ambitactuacio','projectes.idAmbitActuacio','projectes_ambitactuacio.idAmbitActuacio','left');
$this->db->join('projectes_tipusaccio','projectes.idTipusAccio','projectes_ambitactuacio.idTipusAccio','left');
$this->_where_condicions($condicions);
$this->db->order_by($ordre);
$this->db->limit($limit,$offset);
$query = $this->db->get();
The profiler says:
SELECT projectes.idProjecte, projectes.nom_ca AS nom, projectes.descripcio_ca AS descripcio, projectes.data_inici, projectes.data_finalitzacio, projectes.webs_relacionades, projectes_valorconservacio.nom_ca AS valorconservacio_nom, projectes_tipusespai.nom_ca AS tipusespai_nom, projectes_ambitactuacio.nom_ca AS ambitactuacio_nom, projectes_tipusaccio.nom_ca AS tipusaccio_nom
FROM (projectes)
LEFT JOIN projectes_valorconservacio ON projectes.idValorConservacio = projectes_valorconservacio.idValorConservacio
JOIN projectes_tipusespai ON projectes.idTipusEspai
JOIN projectes_ambitactuacio ON projectes.idAmbitActuacio
JOIN projectes_tipusaccio ON projectes.idTipusAccio
ORDER BY data_inici
LIMIT 5
and the query it must be:
SELECT projectes.idProjecte, projectes.nom_ca AS nom, projectes.descripcio_ca AS descripcio, projectes.data_inici, projectes.data_finalitzacio, projectes.webs_relacionades, projectes_valorconservacio.nom_ca AS valorconservacio_nom, projectes_tipusespai.nom_ca AS tipusespai_nom, projectes_ambitactuacio.nom_ca AS ambitactuacio_nom, projectes_tipusaccio.nom_ca AS tipusaccio_nom
FROM (projectes)
LEFT JOIN projectes_valorconservacio ON projectes.idValorConservacio = projectes_valorconservacio.idValorConservacio
LEFT JOIN projectes_tipusespai ON projectes.idTipusEspai
LEFT JOIN projectes_ambitactuacio ON projectes.idAmbitActuacio
LEFT JOIN projectes_tipusaccio ON projectes.idTipusAccio
ORDER BY data_inici
LIMIT 5
What I'm doing wrong?