【问题标题】:Subquery into a LIKE condition mysql子查询到 LIKE 条件 mysql
【发布时间】:2015-10-17 20:31:49
【问题描述】:

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

    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行,不包括最后一行。

【问题讨论】:

  • 只需将模数添加到 JOIN
  • 问题是 idmodulos 不等于另一个 id,例如 dem.iddocenteEquipoMulti 是:“1--1-2015--Eq1”,这是我得到的值子查询是:“1-2015”我必须比较它是否相似不等于

标签: mysql subquery sql-like


【解决方案1】:

已编辑以满足更改后的问题

您应该在JOIN 中包含modulos 并在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;

【讨论】:

  • 那是什么关系呢?
  • 在表格中我显示了查询的值,但想法是每次特定时间它的 Estate=1 的 idmodulos 都会改变,例如今天活动是第一个,我的意思是“ 1-2015”,明天可能是“2-2015” 来自 dem.iddocenteEquipoMulti 的 id 由三个值的联合组成,它们之间的三个 id 是 idmodulo 所以在我的表(php)中我显示了我得到的行查询,但正如我所说,它可以改变,所以我必须通过该 id 过滤为“相似”不等于
  • 不起作用亲爱的朋友,如果我输入我的初始查询 LIKE '%1-2015%' 作为静态值,我会得到我想要的......所以解决方案(我认为)是将子查询放入 LIKE 条件 '%subquery%' 所以我回到最初的问题,我该怎么做?
  • 如果您的子查询返回多行,您不会 - 您使用 join 代替。如果它返回单行,则使用CONCAT()
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-09
    • 2013-03-12
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2011-05-18
    相关资源
    最近更新 更多