18/01/2010, 02:43
|
|
Respuesta: Registros aleatorios sobre consulta de unión Gracias por responder.
¿Que debo poner en tabla? Mis consultas son consultas inner join que recojen información de varias tablas.
Poniendo la tabla principal Formacion me da un error en el union y en esta tabla Formacion.
Así me ha quedado la consulta:
Código:
SELECT Formacion.Id_Curso, Formacion.Visitas, Formacion.FechaAlta, Formacion.Puja, PorcentajeInscritos, Curso, Centro, Poblacion, Provincia, Logo
FROM
(
SELECT Formacion.Id_Curso, Formacion.Visitas, Formacion.FechaAlta, Formacion.Puja, PorcentajeInscritos = CAST((SELECT COUNT(Id) FROM Formacion_Inscritos WHERE Formacion_Inscritos.Id_Curso = Formacion.Id_Curso) / CAST((CASE Formacion.Visitas WHEN 0 THEN 1 ELSE Formacion.Visitas END) AS DECIMAL(9,3)) * 100 AS DECIMAL(9,3)), Formacion.NombreCurso AS Curso, EmpresasCursos.Nombre AS Centro, EmpresasCursos.Poblacion AS Poblacion, tbProvincias.Descripcion AS Provincia, EmpresasCursos.Logo
FROM Formacion INNER JOIN EmpresasCursos ON Formacion.Id_Empresa = EmpresasCursos.Id_Empresa
INNER JOIN tbProvincias ON EmpresasCursos.Provincia = tbProvincias.Id
WHERE Formacion.Id_Delegacion = 0 AND Formacion.Sector IN (5,6,7,9,13) AND Formacion.Puja IN (SELECT TOP 4 Formacion.puja FROM Formacion ORDER BY Formacion.Puja DESC)
) UNION (
SELECT Formacion.Id_Curso, Formacion.Visitas, Formacion.FechaAlta, Formacion.Puja, PorcentajeInscritos = CAST((SELECT COUNT(Id) FROM Formacion_Inscritos WHERE Formacion_Inscritos.Id_Curso = Formacion.Id_Curso) / CAST((CASE Formacion.Visitas WHEN 0 THEN 1 ELSE Formacion.Visitas END) AS DECIMAL(9,3)) * 100 AS DECIMAL(9,3)), Formacion.NombreCurso AS Curso, Formacion_Delegaciones.Nombre AS Centro, Formacion_Delegaciones.Poblacion AS Poblacion, tbProvincias.Descripcion AS Provincia, EmpresasCursos.Logo
FROM Formacion INNER JOIN EmpresasCursos ON Formacion.Id_Empresa = EmpresasCursos.Id_Empresa
INNER JOIN Formacion_Delegaciones ON Formacion.Id_Delegacion = Formacion_Delegaciones.Id_Delegacion
INNER JOIN tbProvincias ON Formacion_Delegaciones.Provincia = tbProvincias.Id
WHERE Formacion.Id_Delegacion <> 0 AND Formacion.Sector IN (5,6,7,9,13) AND Formacion.Puja IN (SELECT TOP 4 Formacion.puja FROM Formacion ORDER BY Formacion.Puja DESC)
) Formacion
ORDER BY Formacion.Puja DESC, NEWID(), PorcentajeInscritos DESC, Formacion.Visitas DESC, Formacion.FechaAlta DESC
|