Autor
|
Tema: Base de datos (Leído 3,379 veces)
|
jsf121
Desconectado
Mensajes: 8
|
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
|
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
Mensajes: 8
|
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
Mensajes: 8
|
|
|
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
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í: SELECT D.IdDetalle, Fac.IdFacultad, C.Nombre FROM Carrera C, DetalleFacultad D, Facultad Fac WHERE D.IdCarrera = C.IdCarrera AND D.IdFacultad = @Cod_Fac GROUP BY D.IdDetalle, Fac.IdFacultad, C.Nombre;
Saludos.
|
|
|
En línea
|
|
|
|
jsf121
Desconectado
Mensajes: 8
|
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
|
@jsf121, #FAIL! hahahahahaha -- Pues entonces sólo realiza un WHERE al final de la consulta, es decir: SELECT * FROM Carrera INNER JOIN DetalleFacultad ON DetalleFacultad.IdCarrera = Carrera.IdCarrera INNER JOIN Facultad ON Facultad.IdFacultad = DetalleFacultad.IdFacultad 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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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
|
|
|
|
|