Ошибка 1242 Mysql субконсультируется

У меня есть проблема с этой субконсультацией.

У меня есть в таблице два пойдите, cveLider и cveOperador что связаны с cveEmpleado, я должен получать имя обоих, я это сделал через субконсультацию, но я получаю ошибку

ОШИБКА 1242 Subquery returns обитал than 1 row

Здесь моя консультация.

SELECT idSolicitud
    ,(SELECT CONCAT (
                sol.cveLider
                ,'  '
                ,em.nomEmpleado
                ,em.ap1Empleado
                ,' '
                ,em.ap2Empleado
                )
        FROM empleado em
            ,solicitud sol
        WHERE sol.cveLider = em.cveEmpleado) AS l
    ,(SELECT CONCAT (
                s.cveOperador
                ,'  '
                ,emp.nomEmpleado
                ,emp.ap1Empleado
                ,' '
                ,emp.ap2Empleado
                )
        FROM empleado emp
            ,solicitud s
        WHERE s.cveOperador = emp.cveEmpleado) AS o
FROM solicitud
GROUP BY idSolicitud
3
задан 21.04.2017, 22:30
0 ответов

Как дела, используя субконсультацию, чтобы возвращать ячейку, ты должен обеспечивать себе, что только возвратилась стоимость, или ограничивать ее, в который только я возвратил линию с LIMIT 1.

Что-то похожее на следующее.

select CONCAT(sol.cveLider,'  ', em.nomEmpleado, em.ap1Empleado,' ', em.ap2Empleado)
    from empleado em, solicitud sol
    where sol.cveLider=em.cveEmpleado LIMIT 1

Но я рекомендую тебе повторно определять твою консультацию, итак, если возвращаются много реестров, эта суб-консультация как estas используя может делать медленным выполнение query

3
ответ дан 03.12.2019, 17:54
  • 1
    большое спасибо уже resolví и если, tení которого видеть с этим n-n" –  02.01.2017, 17:53

Проблема - точно то, что он показывает тебе: Один из subqueries возвращает более одной линии. Было бы нужно обладать копией базы данных, чтобы проверять, но дело что

select ... from empleado em, solicitud sol where sol.cveLider=em.cveEmpleado

или

select ... from empleado emp, solicitud s where s.cveOperador= emp.cveEmpleado

они совпадают с более чем одной линией. Probalas по отдельности чтобы проверять, который. Только возможно использовать subqueries, когда эти возвращают единственную линию.

Однако, он рекомендовал бы использовать тебе join, эта консультация оказывается достаточно плохой. Пожалуйста, publicá структура и данные об обоих подмостках, чтобы мочь предлагать тебе больше деталей.

0
ответ дан 03.12.2019, 17:54
  • 1
    Большое спасибо уже resolví :) это было чем-то простым –  02.01.2017, 17:51

Как кажется, только он был должен делать мне какие-то изменения субконсультации

    select idSolicitud,
    (select distinct CONCAT(sol.cveLider,'  ', em.nomEmpleado, em.ap1Empleado,' ', em.ap2Empleado)
    from empleado em
    where sol.cveLider=em.cveEmpleado limit 1) as l,
    (select distinct CONCAT(sol.cveOperador,'  ', emp.nomEmpleado, emp.ap1Empleado,' ', emp.ap2Empleado)
    from empleado emp
    where sol.cveOperador= emp.cveEmpleado limit 1) as o
    from solicitud sol
    group by idSolicitud, cveLider, cveOperador
0
ответ дан 03.12.2019, 17:54

Теги

Похожие вопросы