Buenos días, estoy haciendo una consulta en mysql con php, la consulta tiene varios joins y union con otras tablas, lo que si es que no funciona, les paso el codigo para que vean y me guien.
Código PHP:
$conexion = mysql_connect("localhost","bd","blabla") or die("No se pudo conectar a la base de datos");
mysql_select_db("FactuSD") or die("No se puede seleccionar BD");
$usuario=mysql_query("Select login, email from sec_users");
while($arr=mysql_fetch_array($usuario)){
$userLogin = $arr['login'];
//echo $userLogin."<br>";
$solicitud = mysql_query("
Select DS.IdSolicitud, S.FechaCarga as Fecha, TE.Descripcion as TipoEmision,
E.Descripcion as Empresa, SI.Descripcion as Sistema, S.ImporteNCR, SU.name as Solicitante,
ES.Descripcion as Estado from DetalleSolicitud DS
JOIN Solicitud S ON DS.IdSolicitud = S.IdSolicitud
JOIN Empresa E ON S.IdEmpresa = E.IdEmpresa
JOIN Estado ES ON DS.IdEstado = ES.IdEstado
JOIN TipoEmision TE ON S.IdTipo = TE.IdTipo
JOIN SistemaElemento SE ON S.IdSE = SE.IdSE
JOIN Sistema SI ON SE.IdSistema = SI.IdSistema
JOIN Acceso A ON S.IdAcceso = A.IdAcceso
JOIN sec_users SU ON A.IdUsuario = SU.login
Where DS.IdDetalle IN
(SELECT DSA.IdDetalle FROM vDetalleSolicitudAprobador DSA
WHERE DSA.IdUsuario =* 'asoler'
AND DSA.IdSolicitud = DS.IdSolicitud AND DSA.IdEstado IN (1, 5)
GROUP BY DSA.IdSolicitud HAVING (DS.Prioridad = MIN(DSA.Prioridad))
AND (MIN(DSA.Prioridad) = (SELECT MIN(DSAT.Prioridad)
FROM vDetalleSolicitudAprobador DSAT*
WHERE DSAT.IdSolicitud = DSA.IdSolicitud AND DSAT.IdEstado IN (1, 5))))
AND DS.IdSolicitud not In (Select IdSolicitud from DetalleSolicitud
where IdEstado = 3)
UNION ALL
SELECT DS.IdSolicitud, S.FechaCarga as Fecha, TE.Descripcion as TipoEmision,
E.Descripcion as Empresa,* SI.Descripcion as Sistema, S.ImporteNCR, SU.name as Solicitante,
ES.Descripcion as Estado
FROM DetalleSolicitud DS
JOIN Solicitud S ON DS.IdSolicitud = S.IdSolicitud
JOIN Nivel N ON S.IdTipo = N.IdTipo
JOIN sec_groups SG ON N.IdCategoria = SG.IdCategoria
JOIN Acceso A ON SG.group_id = A.IdPerfil And S.IdEmpresa = A.IdEmpresa
JOIN TipoEmision TE ON S.IdTipo = TE.IdTipo
JOIN Empresa E ON S.IdEmpresa = E.IdEmpresa
JOIN SistemaElemento SE ON S.IdSE = SE.IdSE
JOIN Sistema SI ON SE.IdSistema = SI.IdSistema
JOIN Acceso AC ON S.IdAcceso = AC.IdAcceso
JOIN sec_users SU ON AC.IdUsuario = SU.login
JOIN Estado ES ON DS.IdEstado = ES.IdEstado
where DS.IdEstado = 4
and A.IdUsuario = 'asoler'
and SG.IdCategoria = 3
and NOT EXISTS(Select D.IdSolicitud From DetalleSolicitud D Where D.IdSolicitud = DS.IdSolicitud AND D.IdEstado != 4)
Group by DS.IdSolicitud
Union ALL
Select DS.IdSolicitud, S.FechaCarga as Fecha, TE.Descripcion as TipoEmision,
E.Descripcion as Empresa, SI.Descripcion as Sistema, S.ImporteNCR, SU.name as Solicitante,
ES.Descripcion as Estado
From DetalleSolicitud DS
JOIN Solicitud S ON DS.IdSolicitud = S.IdSolicitud
JOIN Empresa E ON S.IdEmpresa = E.IdEmpresa
JOIN Estado ES ON DS.IdEstado = ES.IdEstado
JOIN TipoEmision TE ON S.IdTipo = TE.IdTipo
JOIN SistemaElemento SE ON S.IdSE = SE.IdSE
JOIN Sistema SI ON SE.IdSistema = SI.IdSistema
JOIN Acceso A ON S.IdAcceso = A.IdAcceso
JOIN sec_users SU ON A.IdUsuario = SU.login
Where
DS.IdEstado = 3 AND S.IdAcceso IN
(Select IdAcceso From Acceso where IdUsuario = 'asoler')
");
//$solicitud = mysql_query("select * from Acceso where IdUsuario = $userLogin'");
while($arr1=mysql_fetch_array($solicitud)){
echo "<pre>";
print_r($arr1);
echo "</pre>";
}
}
AL ejecutar me muestra que mysql_fetch_array necesita un parametro.
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given
ese es el error, lo que me dí cuenta es que solo el select no ejecuta, con otro select mas pequeño si funciona, espero puedan ayudarme con una alternativa de otra funcion o algo. Gracias...