elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Base de datos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Base de datos  (Leído 3,379 veces)
jsf121

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Base de datos
« en: 6 Mayo 2011, 18:50 pm »

amigos.. tengo un problema con este prodemiento... miren el codigo:
___________________________________________________________
create proc SpLisDet(@Cod_Fac int)
as begin
select D.IdDetalle  ,fac.IdFacultad, C.Nombre
from Carrera C inner join DetalleFacultad  D
on D.IdCarrera  =C.IdCarrera  inner join Facultad fac
on D.IdFacultad=@Cod_Fac 
end

--y cuando ejecuto me salen las carreras con el mismo nombre todos
--- y yo quiero q me salga cada registro con el nombre de la carrera a la q pertenecen :s... ayudenme
___________________________________________


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: Base de datos
« Respuesta #1 en: 6 Mayo 2011, 19:05 pm »

Muéstranos las tablas y los registros...


En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
jsf121

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Base de datos
« Respuesta #2 en: 6 Mayo 2011, 19:19 pm »

CREATE TABLE Facultad
(
IdFacultad char(3)primary key,
IdUniversidad Int references Universidad,
IdGrupCarrera Int references GrupoCarreras
)
Go

CREATE TABLE Carrera
(
IdCarrera int identity(1,1)primary key, --EJEM: 1 - INGIENERIA DE SISTEMAS
Nombre varchar(30)not null
)
Go
CREATE TABLE DetalleFacultad
(
IdDetalle char(5)primary key,
IdFacultad char(3)references Facultad,
IdCarrera int references Carrera
)

En línea

jsf121

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Base de datos
« Respuesta #3 en: 6 Mayo 2011, 19:31 pm »

En línea

Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Base de datos
« Respuesta #4 en: 6 Mayo 2011, 20:22 pm »

Las consultas Inner JOIN debes usarlas lo menos posible, porque consumen bastantes recursos y son bastante más lentas. Para tu caso debería ser suficiente una consulta multitabla simple. No se si estará bien, pero podría ser algo así:

Código
  1. SELECT D.IdDetalle, Fac.IdFacultad, C.Nombre
  2. FROM Carrera C, DetalleFacultad D, Facultad Fac
  3. WHERE D.IdCarrera = C.IdCarrera AND D.IdFacultad = @Cod_Fac
  4. GROUP BY D.IdDetalle, Fac.IdFacultad, C.Nombre;
  5.  

Saludos.
En línea

jsf121

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Base de datos
« Respuesta #5 en: 6 Mayo 2011, 22:09 pm »

no es asi, lo q estas haciendo es hacer un plano cartesiano....  yo quiero q me aparezca el codigo del detalle con el codigo de la faculta y el nombre de la carrera
PERO SOLO DE LA FACULTAS QUE REQUIERO!!!
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: Base de datos
« Respuesta #6 en: 7 Mayo 2011, 19:21 pm »

@jsf121, #FAIL! hahahahahaha


--
Pues entonces sólo realiza un WHERE al final de la consulta, es decir:
Código
  1.     SELECT *
  2.       FROM Carrera
  3. INNER JOIN DetalleFacultad ON DetalleFacultad.IdCarrera = Carrera.IdCarrera
  4. INNER JOIN Facultad        ON Facultad.IdFacultad = DetalleFacultad.IdFacultad
  5.      WHERE ( Facultad.IdFacultad = @Cod_Fac )
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Base de datos
« Respuesta #7 en: 7 Mayo 2011, 19:23 pm »

El problema es como te han puesto antes, has puesto el "filtro" en el ON en lugar del WHERE, además de que poniendo eso en el ON no se esta reflejando realmente la relación de las tablas.

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines