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

Duda consulta SQL

Estas en el tema de Duda consulta SQL en el foro de Bases de Datos General en Foros del Web. Hola, Estoy realizando una consulta SQL que tiene que mostrar: Checkbox1 Categoria1 Checkbox2 Categoria2 ... Para ello, tengo una tabla principal (Categoria), la intermedia (CandidatoCategoria ...
  #1 (permalink)  
Antiguo 22/12/2008, 10:19
 
Fecha de Ingreso: marzo-2008
Mensajes: 26
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Duda consulta SQL

Hola,

Estoy realizando una consulta SQL que tiene que mostrar:

Checkbox1 Categoria1
Checkbox2 Categoria2
...

Para ello, tengo una tabla principal (Categoria), la intermedia (CandidatoCategoria y la secundaria (Candidato). Me interesa mostrar por pantalla todas las Categorias de la tabla principal y un checkbox (true/false) en función de si el Candidato que lo solicita ya tenía esa Categoría marcada previamente (existe esa Categoria y ese Candidato en la tabla intermedia).

Con la siguiente consulta he conseguido mostrar todas las categorías y el Id del Candidato (en caso de que exista en la tabla intermedia), pero para pasarlo a un checkbox necesitaría que el valor devolviese un true/false.


SELECT Categoria.Categoria AS Cat, Categoria.idCategoria AS IdCat,
(SELECT IdUsuarioCategoria FROM CandidatoCategoria WHERE (IdUsuario = @idUsuario) AND (IdCategoria = Categoria.idCategoria)) AS Existe FROM Categoria LEFT OUTER JOIN CandidatoCategoria AS CandidatoCategoria_1 ON Categoria.idCategoria = CandidatoCategoria_1.IdCategoria


Muchas gracias por todo.

Saludos,

Iván
  #2 (permalink)  
Antiguo 22/12/2008, 11:11
 
Fecha de Ingreso: octubre-2008
Mensajes: 81
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Duda consulta SQL

Para que quieres un valor True o False?

Si la consulta por categoria no te envia resultado alguno (IF EOF = True) para cierto candidato es que no tiene dicha categoria, de lo contrario si la tiene, basta con escribir la condicionante que lo deduzca.
  #3 (permalink)  
Antiguo 23/12/2008, 02:17
 
Fecha de Ingreso: marzo-2008
Mensajes: 26
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Duda consulta SQL

Cita:
Iniciado por Milen Ver Mensaje
Para que quieres un valor True o False?

Si la consulta por categoria no te envia resultado alguno (IF EOF = True) para cierto candidato es que no tiene dicha categoria, de lo contrario si la tiene, basta con escribir la condicionante que lo deduzca.
Lo primero de todo, gracias por contestar, estoy trabajando con asp.net, la idea del true/false es que cuando se cargan todos los valores existentes en la tabla de Categorías, se muestren seleccionados aquellos que tenga el usuario que haga la consulta, o sea por pantalla veré:

IdCat1 Cat1 Check1(True/False)
IdCat2 Cat2 Check2...
...

Donde los Checks contendrán un valor true o false en funcion de si esa combinación existe en la tabla intermedia. (Sería lo ideal para mostrarlo por pantalla ya que sería muy simple de implementar el gridview por el que se muestran los datos)

Muchas gracias,

Saludos,

Iván
  #4 (permalink)  
Antiguo 23/12/2008, 08:06
 
Fecha de Ingreso: marzo-2008
Mensajes: 26
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Duda consulta SQL

Buenas, resuelta mi duda, la consulta al final quedaría:

SELECT Categoria.Categoria AS Cat, Categoria.idCategoria AS IdCat, CASE (SELECT COUNT(IdCategoria) AS Existe FROM CandidatoCategoria WHERE (IdUsuario = @idUsuario) AND (IdCategoria = Categoria.idCategoria) GROUP BY IdCategoria) WHEN 1 THEN 'true' ELSE 'false' END AS Resultado FROM Categoria LEFT OUTER JOIN CandidatoCategoria AS CandidatoCategoria_1 ON Categoria.idCategoria = CandidatoCategoria_1.IdCategoria

La cual devuelve todos los registros de la tabla, y para cada registro, true/false en función de si lo tiene asociado el usuario que hace la consulta.

Gracias por todo,

Saludos,

Iván
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 20:33.