ERROR 1242 (Subconsulta retorna más de un registro)
Publicado por Omar (1 intervención) el 19/08/2014 19:33:10
Estimados,
Tengo una aplicación de asistencia que de un momento a otro me arroja el mensaje siguiente:
Error en Consulta SQLUsuario1 Select tablita.IdUsuario, tablita.Nombre, .....SUBQUERY RETURNS MORE THAN 1 ROW (Codigo : ) 1242
Al verificar por BD visualizo todo normal. No encuentro el error, he buscado por foros y no puedo darle solución.
Este es el código de la consulta:
También adjunto la programación de dicha aplicación para ver si me pudieran brindar alguna solución.
Gracias
Tengo una aplicación de asistencia que de un momento a otro me arroja el mensaje siguiente:
Error en Consulta SQLUsuario1 Select tablita.IdUsuario, tablita.Nombre, .....SUBQUERY RETURNS MORE THAN 1 ROW (Codigo : ) 1242
Al verificar por BD visualizo todo normal. No encuentro el error, he buscado por foros y no puedo darle solución.
Este es el código de la consulta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
$sqlusuariol="select
tablita.idusuario
,tablita.Nombre
,tablita.Apellidos
,tablita.DNI
,tablita.NomSucursal
,tablita.Marca
,tablita.FechaIngresoSistema
,(SELECT IFNULL(SUM(DATEDIFF(fechafinal,fechainicio)+1),0) FROM faltapermiso where tipo=2 and IdUsuario=tablita.idusuario AND (fechainicio BETWEEN '".$fechaIni."' AND '".$fechaFin."' OR fechafinal BETWEEN '".$fechaIni."' AND '".$fechaFin."')) as SubsidioIncTem
,(SELECT IFNULL(SUM(DATEDIFF(fechafinal,fechainicio)+1),0) FROM faltapermiso where tipo=3 and IdUsuario=tablita.idusuario AND (fechainicio BETWEEN '".$fechaIni."' AND '".$fechaFin."' OR fechafinal BETWEEN '".$fechaIni."' AND '".$fechaFin."')) as PermisoSinGoce
,(SELECT IFNULL(SUM(DATEDIFF(fechafinal,fechainicio)+1),0) FROM faltapermiso where tipo=4 and IdUsuario=tablita.idusuario AND (fechainicio BETWEEN '".$fechaIni."' AND '".$fechaFin."' OR fechafinal BETWEEN '".$fechaIni."' AND '".$fechaFin."')) as PermisoConGoce
,(SELECT IFNULL(SUM(DATEDIFF(fechafinal,fechainicio)+1),0) FROM faltapermiso where tipo=5 and IdUsuario=tablita.idusuario AND (fechainicio BETWEEN '".$fechaIni."' AND '".$fechaFin."' OR fechafinal BETWEEN '".$fechaIni."' AND '".$fechaFin."')) as DescansoMedico
,(SELECT IFNULL(SUM(DATEDIFF(fechafinal,fechainicio)+1),0) FROM faltapermiso where tipo=6 and IdUsuario=tablita.idusuario AND (fechainicio BETWEEN '".$fechaIni."' AND '".$fechaFin."' OR fechafinal BETWEEN '".$fechaIni."' AND '".$fechaFin."')) as Suspencion
,(SELECT IFNULL(SUM(DATEDIFF(fechafinal,fechainicio)+1),0) FROM faltapermiso where tipo=10 and IdUsuario=tablita.idusuario AND (fechainicio BETWEEN '".$fechaIni."' AND '".$fechaFin."' OR fechafinal BETWEEN '".$fechaIni."' AND '".$fechaFin."')) as SubsidioPaternidad
,IFNULL((SELECT CASE WHEN '".$fechaIni."'<fechainicio THEN DATEDIFF('".$fechaFin."',fechainicio)+1 ELSE
CASE WHEN '".$fechaIni."'>fechainicio AND '".$fechaFin."'<fechafinal THEN DATEDIFF('".$fechaFin."','".$fechaIni."')+1 ELSE
DATEDIFF(fechafinal,'".$fechaFin."')+1 END
END
FROM faltapermiso
where tipo=9 and IdUsuario=tablita.idusuario
AND ('".$fechaIni."' BETWEEN fechainicio AND fechafinal OR '".$fechaFin."' BETWEEN fechainicio AND fechafinal)),0) as SubsidioMaternidad
,(SELECT CASE WHEN '".$fechaIni."'>fechainicio THEN DATEDIFF(fechafinal,'".$fechaIni."')+1 ELSE CASE WHEN fechafinal>'".$fechaFin."' THEN DATEDIFF(fechafinal,'".$fechaFin."')+1 ELSE IFNULL(SUM(DATEDIFF(fechafinal,fechainicio)+1),0) END END FROM faltapermiso where tipo=8 and IdUsuario=tablita.idusuario AND (fechainicio BETWEEN '".$fechaIni."' AND '".$fechaFin."' OR fechafinal BETWEEN '".$fechaIni."' AND '".$fechaFin."')) as Vacaciones
from (
SELECT DISTINCT
u.idusuario,
u.Nombre,
u.Apellidos,
u.DNI,
s.NomSucursal,
(case when u.MarcaTarjeta=1 then 'SI' else 'NO' end) as marca,
u.FechaIngresoSistema
FROM usuario u
INNER JOIN sucursal s ON u.IdSucursal=s.IdSucursal
INNER JOIN tarjeta t on t.IdUsuario=u.IdUsuario
WHERE 1=1
and u.IdTipoUsuario=1
AND t.fecha BETWEEN '".$fechaIni."' AND '".$fechaFin."'
UNION
SELECT u.idusuario,
u.Nombre,
u.Apellidos,
u.DNI,
s.NomSucursal,
(case when u.MarcaTarjeta=1 then 'SI' else 'NO' end) as marca,
u.FechaIngresoSistema
FROM usuario u
INNER JOIN sucursal s ON u.IdSucursal=s.IdSucursal
WHERE 1=1
and u.IdTipoUsuario=1
and fecbaja is null
and IdUsuario not in (
SELECT u.IdUsuario
FROM usuario u
INNER JOIN tarjeta t on t.IdUsuario=u.IdUsuario
WHERE 1=1
AND t.fecha BETWEEN '".$fechaIni."' AND '".$fechaFin."'
GROUP BY u.idusuario
)
) tablita
ORDER BY tablita.Apellidos
";
También adjunto la programación de dicha aplicación para ver si me pudieran brindar alguna solución.
Gracias
- Asistencia.zip(4,6 KB)
Valora esta pregunta
0