Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/01/2010, 02:43
yz!
Invitado
 
Mensajes: n/a
Puntos:
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