Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/07/2010, 13:09
Avatar de gakutaru
gakutaru
 
Fecha de Ingreso: agosto-2005
Ubicación: frente a mi NtbK
Mensajes: 239
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: 2 Consultas a 1 sobre la misma Tabla

si puedo mostrarte esa parte del diagrama, no puedo subir imagenes desde aqui, asi que a puros caracteres ;)

BcoPregunta
idBco----------int
Pregunta----------nvarchar(MAX)
TipoRespuesta----------varchar(100)
Dimension----------varchar(100)
Grupo----------int
Imagen----------varchar(500)
Igualdad----------varchar(200)

Respuesta
idRespuesta---------int
idBco---------int
Respuesta---------nvarchar(MAX)
Correcta---------varchar(50)

breve explicacion, bcoPregunta guarda las preguntas y Respuesta guarda las respuestas de esa pregunta, las preguntas son NRespuestas,1 Correcta; Orden donde el campo respuesta guarda texto enriquesido (al igual que el campo pregunta) y el campo Correcta guarda la respuesta que debe ir.
Estas preguntas son asignadas a un grupo, si la pregunta es ingresada a varios grupos al mismo tiempo, quiere decir que comparten la misma pregunta, para efecto de edicion de una pregunta, se creo el campo igualdad, asi si editan una pregunta, aquellas en donde coincida el campo igualdad tambien sera editada la pregunta.

Ahora bien esto es SQL Server 2005 con VB.NET, la consulta que estoy armando es para llenar un datagrid, (eso lo se hacer) el problema es que hacerlo en 2 consultas es un desgaste porque trato de listar las preguntas que hay,
la logica es mas menos la siguiente

Mientras Recorre campos Igualdad Sin repetir{
Muestro Pregunta
Muestro TipoRespuesta
Muestro Dimension
Muestro Imagen
} //Fin Mientras Recorre campos Igualdad Sin repetir


pero como es en dos consultas

Mientras Recorre campos Igualdad Sin repetir{
Leo Todos los Datos{
Muestro Pregunta
Muestro TipoRespuesta
Muestro Dimension
Muestro Imagen
}//fin leer datos
}//fin mientras recorre


y no se si se nota que se puede mejorar esa consulta que esta hecha en 2 a solo 1 ya que es la misma tabla
PD: en ningun momento llamo a la Tabla Respuesta, no necesito saber sus respuestas ahora.

las combinaciones que he probado:
"Select * From BcoPregunta Where (Count(Igualdad) = 1)"
Error devuelto: No puede aparecer un agregado en la cláusula WHERE si no es en una subconsulta contenida en una cláusula HAVING o en una lista de selección, y siempre que la columna agregada sea una referencia externa.
(Pero Count no va en Where)

"Select * From BcoPregunta Group By Igualdad"
Error devuelto: La columna 'BcoPregunta.idBco' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.
(Pero, GROUP BY se utiliza cuando estamos seleccionado columnas múltiples desde una tabla (o tablas) y aparece al menos un operador aritmético en la instrucción SELECT)

"Select Distinct(Igualdad), idBco From BcoPregunta"
Pero no devuelve los datos filtrados

y esas combinaciones he probado.