OUTER JOIN no me muestra todas las filas de la otra tabla

22/11/2005 - 21:48 por amigo | Informe spam
Hola a todos,

Tengo un sp con OUTER JOIN que no funciona

SELECT lineas.fila, v_autfru.kb, v_autfru.kn, v_autfru.IdCond
FROM v_autfru RIGHT OUTER JOIN
LineasAutor lineas ON v_autfru.Especie =
lineas.idlinea
WHERE (v_autfru.Id = @id)

resultado dice:

1 4 5 201
3 5 6 305
5 4 7 402

yo quiero que diga
1 4 5 201
3 5 6 305
5 4 7 402
2
4
6
7
8
9
10

Quiero que siempre me muestre todas filas de la tabla LineasAutor
Se despide cordialmente,


amigo

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
22/11/2005 - 22:35 | Informe spam
amigo,

El problema esta en el filtro de la clausula "where". Recuerda, al resultado
del join, se le aplica el filtro de la clausula where, asi que solo las filas
del resultado donde se cumpla que (v_autfru.Id = @id) seran devueltas y como
las filas que tu deseas no cumplen el criterio pues entonces no salen. Trata
poniendo el criterio en una "select" que sera usada como tabla derivada.

SELECT lineas.fila, v.kb, v.kn, v.IdCond
FROM
(
select Especie, kb, kn, IdCond from v_autfru WHERE (v_autfru.Id = @id)
) as v
RIGHT OUTER JOIN
LineasAutor lineas
ON v.Especie = lineas.idlinea
go


AMB

"amigo" wrote:

Hola a todos,

Tengo un sp con OUTER JOIN que no funciona

SELECT lineas.fila, v_autfru.kb, v_autfru.kn, v_autfru.IdCond
FROM v_autfru RIGHT OUTER JOIN
LineasAutor lineas ON v_autfru.Especie =
lineas.idlinea
WHERE (v_autfru.Id = @id)

resultado dice:

1 4 5 201
3 5 6 305
5 4 7 402

yo quiero que diga
1 4 5 201
3 5 6 305
5 4 7 402
2
4
6
7
8
9
10

Quiero que siempre me muestre todas filas de la tabla LineasAutor
Se despide cordialmente,


amigo






Respuesta Responder a este mensaje
#2 amigo
23/11/2005 - 16:50 | Informe spam
Buena idea, aunque todavia no logro que me funcione


"Alejandro Mesa" escribió en el
mensaje news:
amigo,

El problema esta en el filtro de la clausula "where". Recuerda, al
resultado
del join, se le aplica el filtro de la clausula where, asi que solo las
filas
del resultado donde se cumpla que (v_autfru.Id = @id) seran devueltas y
como
las filas que tu deseas no cumplen el criterio pues entonces no salen.
Trata
poniendo el criterio en una "select" que sera usada como tabla derivada.

SELECT lineas.fila, v.kb, v.kn, v.IdCond
FROM
(
select Especie, kb, kn, IdCond from v_autfru WHERE (v_autfru.Id = @id)
) as v
RIGHT OUTER JOIN
LineasAutor lineas
ON v.Especie = lineas.idlinea
go


AMB

"amigo" wrote:

Hola a todos,

Tengo un sp con OUTER JOIN que no funciona

SELECT lineas.fila, v_autfru.kb, v_autfru.kn, v_autfru.IdCond
FROM v_autfru RIGHT OUTER JOIN
LineasAutor lineas ON v_autfru.Especie >> lineas.idlinea
WHERE (v_autfru.Id = @id)

resultado dice:

1 4 5 201
3 5 6 305
5 4 7 402

yo quiero que diga
1 4 5 201
3 5 6 305
5 4 7 402
2
4
6
7
8
9
10

Quiero que siempre me muestre todas filas de la tabla LineasAutor
Se despide cordialmente,


amigo






Respuesta Responder a este mensaje
#3 amigo
23/11/2005 - 19:34 | Informe spam
no, definitivamente no funciona... que cosa podrá faltar?


"Alejandro Mesa" escribió en el
mensaje news:
amigo,

El problema esta en el filtro de la clausula "where". Recuerda, al
resultado
del join, se le aplica el filtro de la clausula where, asi que solo las
filas
del resultado donde se cumpla que (v_autfru.Id = @id) seran devueltas y
como
las filas que tu deseas no cumplen el criterio pues entonces no salen.
Trata
poniendo el criterio en una "select" que sera usada como tabla derivada.

SELECT lineas.fila, v.kb, v.kn, v.IdCond
FROM
(
select Especie, kb, kn, IdCond from v_autfru WHERE (v_autfru.Id = @id)
) as v
RIGHT OUTER JOIN
LineasAutor lineas
ON v.Especie = lineas.idlinea
go


AMB

"amigo" wrote:

Hola a todos,

Tengo un sp con OUTER JOIN que no funciona

SELECT lineas.fila, v_autfru.kb, v_autfru.kn, v_autfru.IdCond
FROM v_autfru RIGHT OUTER JOIN
LineasAutor lineas ON v_autfru.Especie >> lineas.idlinea
WHERE (v_autfru.Id = @id)

resultado dice:

1 4 5 201
3 5 6 305
5 4 7 402

yo quiero que diga
1 4 5 201
3 5 6 305
5 4 7 402
2
4
6
7
8
9
10

Quiero que siempre me muestre todas filas de la tabla LineasAutor
Se despide cordialmente,


amigo






Respuesta Responder a este mensaje
#4 Alejandro Mesa
23/11/2005 - 20:16 | Informe spam
amigo,

Si posteas un script como este, entonces podremos entender a lo que te
refieres y quizas ayudarte a solucionarlo.

use northwind
go

create table LineasAutor (
fila int not null,
idlinea int not null
)
go

create table v_autfru (
[id] int not null,
Especie int not null,
kb int not null,
kn int not null,
idCond int not null
)
go

insert into LineasAutor values(1, 1)
insert into LineasAutor values(2, 45)
insert into LineasAutor values(3, 3)
insert into LineasAutor values(4, 45)
insert into LineasAutor values(5, 5)
insert into LineasAutor values(6, 23)
insert into LineasAutor values(7, 23)
insert into LineasAutor values(8, 23)
insert into LineasAutor values(9, 23)
insert into LineasAutor values(10, 23)
go

insert into v_autfru values(21, 1, 4, 5, 201)
insert into v_autfru values(21, 3, 5, 6, 305)
insert into v_autfru values(21, 5, 4, 7, 402)
go

declare @id int

set @id = 21

SELECT lineas.fila, v.kb, v.kn, v.IdCond
FROM
(
select Especie, kb, kn, IdCond from v_autfru WHERE (v_autfru.[Id] = @id)
) as v
RIGHT OUTER JOIN
LineasAutor lineas
ON v.Especie = lineas.idlinea
order by case when v.especie is null then 1 else 0 end asc
go

go


AMB

"amigo" wrote:

no, definitivamente no funciona... que cosa podrá faltar?


"Alejandro Mesa" escribió en el
mensaje news:
> amigo,
>
> El problema esta en el filtro de la clausula "where". Recuerda, al
> resultado
> del join, se le aplica el filtro de la clausula where, asi que solo las
> filas
> del resultado donde se cumpla que (v_autfru.Id = @id) seran devueltas y
> como
> las filas que tu deseas no cumplen el criterio pues entonces no salen.
> Trata
> poniendo el criterio en una "select" que sera usada como tabla derivada.
>
> SELECT lineas.fila, v.kb, v.kn, v.IdCond
> FROM
> (
> select Especie, kb, kn, IdCond from v_autfru WHERE (v_autfru.Id = @id)
> ) as v
> RIGHT OUTER JOIN
> LineasAutor lineas
> ON v.Especie = lineas.idlinea
> go
>
>
> AMB
>
> "amigo" wrote:
>
>> Hola a todos,
>>
>> Tengo un sp con OUTER JOIN que no funciona
>>
>> SELECT lineas.fila, v_autfru.kb, v_autfru.kn, v_autfru.IdCond
>> FROM v_autfru RIGHT OUTER JOIN
>> LineasAutor lineas ON v_autfru.Especie > >> lineas.idlinea
>> WHERE (v_autfru.Id = @id)
>>
>> resultado dice:
>>
>> 1 4 5 201
>> 3 5 6 305
>> 5 4 7 402
>>
>> yo quiero que diga
>> 1 4 5 201
>> 3 5 6 305
>> 5 4 7 402
>> 2
>> 4
>> 6
>> 7
>> 8
>> 9
>> 10
>>
>> Quiero que siempre me muestre todas filas de la tabla LineasAutor
>> Se despide cordialmente,
>>
>>
>> amigo
>>
>>
>>
>>
>>
>>



Respuesta Responder a este mensaje
#5 amigo
24/11/2005 - 13:26 | Informe spam
Cierto, tu script se parece mucho solo hay que cambiar un tipo de datos de
int a varchar(10)


use northwind
go

create table LineasAutor (
fila int not null,
idlinea varchar(10) not null
)
go

create table v_autfru (
[id] int not null,
Especie varchar(10) not null,
kb int not null,
kn int not null,
idCond int not null
)
go

insert into LineasAutor values(1, 'CIRUELA')
insert into LineasAutor values(2, 'MANZANA')
insert into LineasAutor values(3, 'CEREZAS')
insert into LineasAutor values(4, 'CIRUELAS')
insert into LineasAutor values(5, 'DAMASCOS')
insert into LineasAutor values(6, 'DURAZNOS')
insert into LineasAutor values(7, 'LIMONES')
insert into LineasAutor values(8, 'NARANJAS')
insert into LineasAutor values(9, 'PERAS')
insert into LineasAutor values(10, 'UVAS')
go

insert into v_autfru values(21, 'UVAS', 4, 5, 201)
insert into v_autfru values(21, 'PERAS', 5, 6, 305)
insert into v_autfru values(21, 'CEREZAS', 4, 7, 402)
go

declare @id int

set @id = 21

SELECT lineas.fila, v.kb, v.kn, v.IdCond
FROM
(
select Especie, kb, kn, IdCond from v_autfru WHERE (v_autfru.[Id] = @id)
) as v
RIGHT OUTER JOIN
LineasAutor lineas
ON v.Especie = lineas.idlinea
order by case when v.especie is null then 1 else 0 end asc
go

go


"Alejandro Mesa" escribió en el
mensaje news:
amigo,

Si posteas un script como este, entonces podremos entender a lo que te
refieres y quizas ayudarte a solucionarlo.

use northwind
go

create table LineasAutor (
fila int not null,
idlinea int not null
)
go

create table v_autfru (
[id] int not null,
Especie int not null,
kb int not null,
kn int not null,
idCond int not null
)
go

insert into LineasAutor values(1, 1)
insert into LineasAutor values(2, 45)
insert into LineasAutor values(3, 3)
insert into LineasAutor values(4, 45)
insert into LineasAutor values(5, 5)
insert into LineasAutor values(6, 23)
insert into LineasAutor values(7, 23)
insert into LineasAutor values(8, 23)
insert into LineasAutor values(9, 23)
insert into LineasAutor values(10, 23)
go

insert into v_autfru values(21, 1, 4, 5, 201)
insert into v_autfru values(21, 3, 5, 6, 305)
insert into v_autfru values(21, 5, 4, 7, 402)
go

declare @id int

set @id = 21

SELECT lineas.fila, v.kb, v.kn, v.IdCond
FROM
(
select Especie, kb, kn, IdCond from v_autfru WHERE (v_autfru.[Id] = @id)
) as v
RIGHT OUTER JOIN
LineasAutor lineas
ON v.Especie = lineas.idlinea
order by case when v.especie is null then 1 else 0 end asc
go

go


AMB

"amigo" wrote:

no, definitivamente no funciona... que cosa podrá faltar?


"Alejandro Mesa" escribió en el
mensaje news:
> amigo,
>
> El problema esta en el filtro de la clausula "where". Recuerda, al
> resultado
> del join, se le aplica el filtro de la clausula where, asi que solo las
> filas
> del resultado donde se cumpla que (v_autfru.Id = @id) seran devueltas y
> como
> las filas que tu deseas no cumplen el criterio pues entonces no salen.
> Trata
> poniendo el criterio en una "select" que sera usada como tabla
> derivada.
>
> SELECT lineas.fila, v.kb, v.kn, v.IdCond
> FROM
> (
> select Especie, kb, kn, IdCond from v_autfru WHERE (v_autfru.Id =
> @id)
> ) as v
> RIGHT OUTER JOIN
> LineasAutor lineas
> ON v.Especie = lineas.idlinea
> go
>
>
> AMB
>
> "amigo" wrote:
>
>> Hola a todos,
>>
>> Tengo un sp con OUTER JOIN que no funciona
>>
>> SELECT lineas.fila, v_autfru.kb, v_autfru.kn, v_autfru.IdCond
>> FROM v_autfru RIGHT OUTER JOIN
>> LineasAutor lineas ON v_autfru.Especie >> >> lineas.idlinea
>> WHERE (v_autfru.Id = @id)
>>
>> resultado dice:
>>
>> 1 4 5 201
>> 3 5 6 305
>> 5 4 7 402
>>
>> yo quiero que diga
>> 1 4 5 201
>> 3 5 6 305
>> 5 4 7 402
>> 2
>> 4
>> 6
>> 7
>> 8
>> 9
>> 10
>>
>> Quiero que siempre me muestre todas filas de la tabla LineasAutor
>> Se despide cordialmente,
>>
>>
>> amigo
>>
>>
>>
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida