子查询到LIKE条件mysql

时间:2015-10-17 20:31:49

标签: mysql subquery sql-like

我正在尝试根据另一个查询的结果进行查询,主要查询是:

    SELECT d.nombre, d.apellido,em.codigo, em.descripcion, d.iddocente, em.idequipoMulti 
        FROM docenteequipomulti dem 
         INNER JOIN docente d ON dem.docente_iddocente=d.iddocente 
         INNER JOIN equipomulti em ON dem.equipoMulti_idequipoMulti=em.idequipoMulti 
        WHERE 
dem.iddocenteEquipoMulti LIKE '%(subquery)%'

没有where它会显示所有值,但我必须按子查询返回的值过滤它们。

这是子查询:

SELECT concat_ws ('-', m.numModulo, p.periodo) AS MPeriodo FROM modulos m INNER JOIN periodo p ON m.periodo_idperiodo=p.idperiodo WHERE m.estado=1

该查询总是会获得一个值,例如“1-2015”,但我将子查询放入“()”并且不起作用。我做错了什么?

编辑:我有一些这样的ID

1--1-2015 - EQ1

1--1-2015 - EQ2

2--1-2015 - EQ3

1--2-2015 - EQ1

这个想法是过滤那些拥有“1-2015”的ID,无论它们有什么,所以它必须只显示3行,不包括最后一行。

2 个答案:

答案 0 :(得分:1)

编辑以满足更改后的问题

您应该在modulos中添加JOIN并在JOIN ... ON中过滤:

SELECT d.nombre, d.apellido,em.codigo, em.descripcion, d.iddocente, em.idequipoMulti 
    FROM docenteequipomulti dem 
     INNER JOIN docente d ON dem.docente_iddocente=d.iddocente 
     INNER JOIN equipomulti em ON dem.equipoMulti_idequipoMulti=em.idequipoMulti 
     JOIN modulos m ON (dem.iddocenteEquipoMulti LIKE concat('%',m.numModulo, '-', p.periodo,'%') AND m.estado=1)
     JOIN periodo p ON m.periodo_idperiodo=p.idperiodo;

答案 1 :(得分:0)

好吧,我无法按照自己的意愿工作,而是创建了子查询,将其保存到变量中,然后将其用作主体查询的参数,感谢您的帮助。