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

Select Except en tres tablas con varios campos

Estas en el tema de Select Except en tres tablas con varios campos en el foro de SQL Server en Foros del Web. Hola amigos que tal, necesito ayuda con un procedimiento almacenado. Las tablas involucradas son las siguientes tres. En la tabla EveNro relaciono el Id de ...
  #1 (permalink)  
Antiguo 11/09/2010, 09:12
Avatar de Huasi  
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 16 años, 10 meses
Puntos: 2
Select Except en tres tablas con varios campos

Hola amigos que tal, necesito ayuda con un procedimiento almacenado. Las tablas involucradas son las siguientes tres. En la tabla EveNro relaciono el Id de la tabla Evento con el Id de la tabla Numero:

Evento
EveId (int) pk
EveNombre (nvarchar)
EveFecha (datetime)
...

Numero
NumId (int) pk
NumNombre (nvarchar)
NumDescripcion (nvarchar)
...

EveNro
EveId (int) pk (fk Evento.EveId)
NroId (int) pk (fk Numero.NumId)

La informacion en las tablas seria algo asi:

Evento (EveId - EveNombre - EveFecha)
01 - Arte - 01/03/2010
02 - Moda - 02/04/2010
03 - Tango - 03/04/2010

Numero (NumId - NumNombre - NumDescripcion)
01 - Juan - Escultor
02 - Ernesto - Musico
03 - Marcos - Modelo
04 - Ana - Diseñador

EveNro (EveId - NroId)
01 - 01
02 - 03
02 - 04
03 - 02

Necesito realizar un procedimiento almacenado que me muestre los numeros disponibles para un evento siempre y cuando no se encuentren ya seleccionados para este mismo evento. Logre realizarlo de la siguiente manera pero solo puedo ver el campo NumId y yo necesito que me devuelva mas campos

Código SQL:
Ver original
  1. ALTER PROCEDURE dbo.VerNumeroEvento
  2. (@Buscado INT)
  3. AS
  4. SELECT DISTINCT NumId, FROM Numero
  5. EXCEPT
  6. SELECT NroId FROM EveNro
  7. WHERE EveNro.EveId = @Buscado
  8. SET NOCOUNT ON;
  9. RETURN

Espero por su ayuda, gracias.
  #2 (permalink)  
Antiguo 13/09/2010, 11:32
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Select Except en tres tablas con varios campos

¿Que base de datos estas manejando?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 13/09/2010, 12:05
Avatar de Huasi  
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Select Except en tres tablas con varios campos

La base la cree a traves del visual studio, es una sql database .mdf
El problema es que necesito si o si que me devuelva varios datos para rellenar un control, con el id no me alcanza. Capaz que sea de otra manera la consulta y no utilizando except, llevo tiempo ya parado en esta consulta
  #4 (permalink)  
Antiguo 13/09/2010, 14:27
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Select Except en tres tablas con varios campos

Prueba de esta forma:
Código SQL:
Ver original
  1. SELECT N.*
  2. FROM Evento E
  3. FULL JOIN Numero N ON E.EveId = N.NumId
  4. WHERE NOT EXISTS(
  5.     SELECT 1 FROM EveNro EN WHERE EN.EveId = E.EveId AND EN.NroId = N.NumId
  6. )
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 14/09/2010, 16:39
Avatar de Huasi  
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Select Except en tres tablas con varios campos

Cita:
Iniciado por flaviovich Ver Mensaje
Prueba de esta forma:
Código SQL:
Ver original
  1. SELECT N.*
  2. FROM Evento E
  3. FULL JOIN Numero N ON E.EveId = N.NumId
  4. WHERE NOT EXISTS(
  5.     SELECT 1 FROM EveNro EN WHERE EN.EveId = E.EveId AND EN.NroId = N.NumId
  6. )
Que tal amigo, estuve intentando adaptar tu consulta pero tampoco me dio resultado. Lo que necesito es listar ID y Nombre de la tabla NUMERO. En tu consulta partimos de un SELECT a la tabla EVENTOS. La condicion de la seleccion es que el numero no se encuentre ya relacionado al determinado evento, por eso declaro @Buscado int porque trabajamos con un Evento en cuestion. A modo de ejemplo: en el Evento "Tango" si ya esta asignado el Numero "Juan" y "Ana", estos no se deben listar en la consulta puesto que se deben listar los Numeros que no estan relacionados a este Evento. Lo que si se puede es repetir un numero en diferentes eventos. Mi necesidad es RELLENAR un control gridview a traves de un procedimiento almacenado que luego me permita asignar numeros a un evento.
Espero ayuda para poder resolver esta eterna consulta... desde ya muchas gracias
  #6 (permalink)  
Antiguo 14/09/2010, 19:50
Avatar de Huasi  
Fecha de Ingreso: mayo-2007
Mensajes: 83
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: Select Except en tres tablas con varios campos

Me parece que descubri el codigo, tengo que probarlo en el control pero al ejecutar la consulta me devuelve correctamente los valores, seria algo asi:

Código SQL:
Ver original
  1. ALTER PROCEDURE dbo.VerNumeroEvento
  2. (@Buscado INT)
  3. AS
  4. SELECT N.*
  5. FROM Numero N
  6. FULL JOIN Eventos E ON N.NumId = E.EveId
  7. WHERE NumId IS NOT NULL AND NOT EXISTS
  8. (SELECT NroId FROM EveNro EN WHERE EN.NroId = N.NumId AND EN.EveId = @Buscado)
  9. SET NOCOUNT ON;
  10. RETURN

Hasta ahora parece que estaria resuelto, cualquier cosa vuelvo a escribir. Gracias a todos por su ayuda...

Etiquetas: campos, select, tablas, tres
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

SíEste tema le ha gustado a 1 personas




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