Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Vista SQL

Estas en el tema de Vista SQL en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 04/08/2009, 04:30
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 0
Vista SQL

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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:44.