SQL Server - Vista compleja con varias tablas y convert

 
Vista:

Vista compleja con varias tablas y convert

Publicado por Jose Ibarz (2 intervenciones) el 04/08/2009 12:23:10
Buenos dias,

llevo una semana con la misma sentencia SQL y no hay manera de sacarla adelante. El problema en que me he encallado es que tengo una tabla proyectos que está sujeta a una categorización. Entonces, un proyecto puede estar en ninguna o varias categorias. De todas esas categorias existe una que se llama "Seguridad" y que es la que deseo mostrar si un proyecto pertenece a esa categoria o no.

Ahora mismo tengo la siguiente select.

SELECT p.id, p.code, p.project, uSponsor.nombre AS sponsor, uLeader.nombre AS leader, dbo.iniFinProyecto.fechaIni,
dbo.iniFinProyecto.fechaFin, p.score, CONVERT(BIT, (CASE WHEN dbo.categoriasProyecto.categoria = 'Seguridad' THEN '1' ELSE '0' END)) AS seguridad, p.businessSupport,
dbo.completadoPorProyecto.completado, dbo.statusPorProyecto.status
FROM dbo.categoriasProyecto INNER JOIN
dbo.categorizacionProyectos ON dbo.categoriasProyecto.id = dbo.categorizacionProyectos.categoria RIGHT OUTER JOIN
dbo.Proyectos p INNER JOIN
dbo.Usuarios uSponsor ON p.sponsor = uSponsor.id INNER JOIN
dbo.Usuarios uLeader ON p.leader = uLeader.id INNER JOIN
dbo.iniFinProyecto ON p.id = dbo.iniFinProyecto.proyecto ON dbo.categorizacionProyectos.proyecto = p.id LEFT OUTER JOIN
dbo.statusPorProyecto ON p.id = dbo.statusPorProyecto.proyecto LEFT OUTER JOIN
dbo.completadoPorProyecto ON p.id = dbo.completadoPorProyecto.proyecto
WHERE (p.activo = 1) AND (dbo.categoriasProyecto.categoria IS NULL OR
dbo.categoriasProyecto.categoria = 'Seguridad')
ORDER BY p.score DESC

Como puede verse si pertenece a la categoria existe le pongo un 1 en el campo seguridad (posteriormente lo muestro con un checkbox, de ahí el convert).

Ahora bien, me acabo de dar cuenta cuando ya casi lo tenía, que el filtro que pongo en el where es contraproducente, pues si un proyecto esta en la categoria B y no en Seguridad, no aparecería en la lista, pues solo filtro los proyectos que pertenezcan a Seguridad o que no pertenecen a ninguna categoria.

Que és lo que me estoy olvidando para que solamente me muestre una vez cada proyecto, y en concreto si pertenece a seguridad o no?

Muchas gracias.
Si necesitan cualquier aclaración no duden en preguntar, entiendo que es una situación compleja...

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

RE:Vista compleja con varias tablas y convert

Publicado por Isaias (4558 intervenciones) el 04/08/2009 16:49:38
No veo caso de utilizar un CAST de un BIT, cuando tu resultado solo sera o 1 o 0.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Vista compleja con varias tablas y convert

Publicado por Jose Ibarz (2 intervenciones) el 04/08/2009 16:52:10
No, devolverá "Seguridad" o NULL. Pero el problema más grave creo que és que al poner en el where Seguridad o NULL solamente me quedo con los que esten en la categoria seguridad o no estén en ninguna.

Si por ejemplo hay un proyecto que pertenece a ingenieria solamente, no aparecerá en la lista.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar