我有这个查询:

$criteria = new CDbCriteria ;
$criteria->select = "usuarioproyectotiendaid, upt.usuarioid,
                         proyecto.*, upt.tiendaid, upt.fechainicio, estado.estadodsc,
                         upt.lunes, upt.martes, upt.miercoles, upt.jueves, upt.viernes,upt.sabado, upt.domingo,
                         t.tiendaid, t.clienteid, canal.canaldsc, formatodsc, ciudaddsc, regiondsc, ndeterminante,
                         td.telefono, td.contacto, td.horaIni, td.horaFin, td.latitude, td.longitude,
                         sucursal, nielsen, tienda, calle, colonia, cp, t.activo" ;
    $criteria->join =" join usuarioproyectotienda upt on upt.tiendaid = t.tiendaid and upt.usuarioid=".$usuarioid;
    $criteria->join.=" join canal on canal.canalid = t.canalid";
    $criteria->join.=" join formato on formato.formatoid = t.formatoid";
    $criteria->join.=" join ciudad on ciudad.ciudadid = t.ciudadid";
    $criteria->join.=" join region on region.regionid = t.regionid";
    $criteria->join.=" join tienda_detalles td on td.tienda_id = t.tiendaid";
    $criteria->join.=" join proyecto on proyecto.proyectoid = upt.proyectoid";
    $criteria->join.=" join estado on estado.estadoid = t.ciudadid";


当表tienda_detalles已满时,一切正常(5个结果),但是当我删除该表中的数据时,查询不会给我任何结果。

该表只是完成表“ tienda”中信息的可选数据,因此,如果没有数据,我仍然应该有5个结果,该怎么办?

如果需要,我可以发布真实的sql查询。

最佳答案

您应该使用LEFT JOIN而不是JOIN

JOIN需要联接表中的数据,但如果未找到任何行,则LEFT JOIN允许它们为null。

关于mysql - 加入Mysql效果不佳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23298282/

10-16 13:37