A ver si es posible...

31/05/2006 - 04:05 por Pablo Rodríguez | Informe spam
Tengo una consulta:

SELECT TOP 100 PERCENT S.Id [NroSocio], S.Nombre, UPPER(S.Apellido) AS
Apellido, TipoDoc + ' ' + S.NroDoc [Documento],
S.Vinculacion, S.F_Ingreso
FROM
(SELECT *
FROM tblSocio
WHERE Nombre LIKE '%' + @Nombre + '%'
AND Apellido LIKE '%' + @Apellido + '%') S
ORDER BY Apellido, Nombre

Mi pregunta es: es posible devolver un valor 'Si' o 'No'en la misma
consulta, si se cumple que en una segunda tabla, tblMembresia, hay un
registro cuyo IdSocio se corresponde con el Id en tblSocio...

¿Se entiende?

Preguntas similare

Leer las respuestas

#1 qwalgrande
31/05/2006 - 07:39 | Informe spam
Hola.

Sí que se puede:

SELECT TOP 100 PERCENT S.Id [NroSocio], S.Nombre, UPPER(S.Apellido) AS
Apellido, TipoDoc + ' ' + S.NroDoc [Documento],
S.Vinculacion, S.F_Ingreso,
case when M.IdSocio is null then 'NO' else 'SI' end as [MiColumna]
FROM
(SELECT *
FROM tblSocio
WHERE Nombre LIKE '%' + @Nombre + '%'
AND Apellido LIKE '%' + @Apellido + '%') S left join
tblMembresia M on S.IdSocio = M.IdSocio
ORDER BY Apellido, Nombre


Alberto López Grande (qwalgrande)


"Pablo Rodríguez" escribió en el mensaje
news:%
Tengo una consulta:

SELECT TOP 100 PERCENT S.Id [NroSocio], S.Nombre, UPPER(S.Apellido) AS
Apellido, TipoDoc + ' ' + S.NroDoc [Documento],
S.Vinculacion, S.F_Ingreso
FROM
(SELECT *
FROM tblSocio
WHERE Nombre LIKE '%' + @Nombre + '%'
AND Apellido LIKE '%' + @Apellido + '%') S
ORDER BY Apellido, Nombre

Mi pregunta es: es posible devolver un valor 'Si' o 'No'en la misma
consulta, si se cumple que en una segunda tabla, tblMembresia, hay un
registro cuyo IdSocio se corresponde con el Id en tblSocio...

¿Se entiende?



Respuesta Responder a este mensaje
#2 Eladio Rincón
31/05/2006 - 09:12 | Informe spam
Hola,

mira a ver si este ejemplo te sirve...

deberás comprobar cual de las consultas es más eficiente en tu sistema:

use northwind
go
create table dbo.padre (id int primary key)
go
create table dbo.hijo (id int primary key, idPadre int
constraint fk foreign key references dbo.padre(id))
go

insert dbo.padre values (1)
insert dbo.padre values (2)
insert dbo.padre values (3)
go
insert dbo.hijo values (1, 1)
insert dbo.hijo values (2, 1)
insert dbo.hijo values (3, 1)
insert dbo.hijo values (4, 2)
go

select distinct padre.*,
case when isnull(idpadre,-1) = -1 then 'No' else 'Si' end as Existe
from dbo.padre left join dbo.hijo
on padre.id = hijo.idPadre
go

select padre.*,
case when isnull(idpadre,-1) = -1 then 'No' else 'Si' end as Existe
from dbo.padre left join
(select idPadre, count(*) as Cantidad from dbo.hijo group by idPadre) hijo
on padre.id = hijo.idPadre
go




Eladio Rincón,
http://www.siquelnet.com

Mentor, SQL Server MVP
Solid Quality Learning Iberoamericana
http://www.solidqualitylearning.com

"Pablo Rodríguez" wrote in message
news:%
Tengo una consulta:

SELECT TOP 100 PERCENT S.Id [NroSocio], S.Nombre, UPPER(S.Apellido) AS
Apellido, TipoDoc + ' ' + S.NroDoc [Documento],
S.Vinculacion, S.F_Ingreso
FROM
(SELECT *
FROM tblSocio
WHERE Nombre LIKE '%' + @Nombre + '%'
AND Apellido LIKE '%' + @Apellido + '%') S
ORDER BY Apellido, Nombre

Mi pregunta es: es posible devolver un valor 'Si' o 'No'en la misma
consulta, si se cumple que en una segunda tabla, tblMembresia, hay un
registro cuyo IdSocio se corresponde con el Id en tblSocio...

¿Se entiende?



Respuesta Responder a este mensaje
#3 Pablo Rodríguez
31/05/2006 - 23:40 | Informe spam
Gracias a los 2,
ya voy a probar!



"Pablo Rodríguez" escribió en el mensaje
news:%
Tengo una consulta:

SELECT TOP 100 PERCENT S.Id [NroSocio], S.Nombre, UPPER(S.Apellido) AS
Apellido, TipoDoc + ' ' + S.NroDoc [Documento],
S.Vinculacion, S.F_Ingreso
FROM
(SELECT *
FROM tblSocio
WHERE Nombre LIKE '%' + @Nombre + '%'
AND Apellido LIKE '%' + @Apellido + '%') S
ORDER BY Apellido, Nombre

Mi pregunta es: es posible devolver un valor 'Si' o 'No'en la misma
consulta, si se cumple que en una segunda tabla, tblMembresia, hay un
registro cuyo IdSocio se corresponde con el Id en tblSocio...

¿Se entiende?



Respuesta Responder a este mensaje
#4 Pablo Rodríguez
31/05/2006 - 23:42 | Informe spam
A propósito de esta solución, podrías explicarme un poco como funciona left
y right join,
porque recuerdo haber visto por ej. left outer join, pero nunca los use
porque no se exactamente como funcionan.


Saludos
Pablo Rodríguez



"qwalgrande" escribió en el mensaje
news:uyVIy$
Hola.

Sí que se puede:

SELECT TOP 100 PERCENT S.Id [NroSocio], S.Nombre, UPPER(S.Apellido) AS
Apellido, TipoDoc + ' ' + S.NroDoc [Documento],
S.Vinculacion, S.F_Ingreso,
case when M.IdSocio is null then 'NO' else 'SI' end as [MiColumna]
FROM
(SELECT *
FROM tblSocio
WHERE Nombre LIKE '%' + @Nombre + '%'
AND Apellido LIKE '%' + @Apellido + '%') S left join
tblMembresia M on S.IdSocio = M.IdSocio
ORDER BY Apellido, Nombre


Alberto López Grande (qwalgrande)


"Pablo Rodríguez" escribió en el mensaje
news:%
Tengo una consulta:

SELECT TOP 100 PERCENT S.Id [NroSocio], S.Nombre, UPPER(S.Apellido) AS
Apellido, TipoDoc + ' ' + S.NroDoc [Documento],
S.Vinculacion, S.F_Ingreso
FROM
(SELECT *
FROM tblSocio
WHERE Nombre LIKE '%' + @Nombre + '%'
AND Apellido LIKE '%' + @Apellido + '%') S
ORDER BY Apellido, Nombre

Mi pregunta es: es posible devolver un valor 'Si' o 'No'en la misma
consulta, si se cumple que en una segunda tabla, tblMembresia, hay un
registro cuyo IdSocio se corresponde con el Id en tblSocio...

¿Se entiende?







Respuesta Responder a este mensaje
#5 qwalgrande
01/06/2006 - 07:48 | Informe spam
Hola.

Te daré la versión corta y simplificada, puedes consultar los BOL si te
quedan más dudas.

Si tenemos dos tablas, A y B, vinculadas por el campo id, una union inner
devolverá los registros que estén en ambas tablas. Una union left devolverá
todos los registros de la tabla A y los de la tabla B que coincidan y nulos
para los que no. Una union right es igual que left, pero devolviendo todos
los registros de B.
Ejemplo:
Tabla A, registros 1, 2, 3
Tabla B, registros 2, 3, 4

select A.id as Campo_A, B.id as Campo_B from A inner join B on A.id = B.id
Campo_A Campo_B
2 2
3 3

select A.id as Campo_A, B.id as Campo_B from A left join B on A.id = B.id
Campo_A Campo_B
1 NULL
2 2
3 3

select A.id as Campo_A, B.id as Campo_B from A right join B on A.id = B.id
Campo_A Campo_B
2 2
3 3
NULL 4



Alberto López Grande (qwalgrande)


"Pablo Rodríguez" escribió en el mensaje
news:
A propósito de esta solución, podrías explicarme un poco como funciona left
y right join,
porque recuerdo haber visto por ej. left outer join, pero nunca los use
porque no se exactamente como funcionan.


Saludos
Pablo Rodríguez



"qwalgrande" escribió en el mensaje
news:uyVIy$
Hola.

Sí que se puede:

SELECT TOP 100 PERCENT S.Id [NroSocio], S.Nombre, UPPER(S.Apellido) AS
Apellido, TipoDoc + ' ' + S.NroDoc [Documento],
S.Vinculacion, S.F_Ingreso,
case when M.IdSocio is null then 'NO' else 'SI' end as [MiColumna]
FROM
(SELECT *
FROM tblSocio
WHERE Nombre LIKE '%' + @Nombre + '%'
AND Apellido LIKE '%' + @Apellido + '%') S left join
tblMembresia M on S.IdSocio = M.IdSocio
ORDER BY Apellido, Nombre


Alberto López Grande (qwalgrande)


"Pablo Rodríguez" escribió en el mensaje
news:%
Tengo una consulta:

SELECT TOP 100 PERCENT S.Id [NroSocio], S.Nombre, UPPER(S.Apellido) AS
Apellido, TipoDoc + ' ' + S.NroDoc [Documento],
S.Vinculacion, S.F_Ingreso
FROM
(SELECT *
FROM tblSocio
WHERE Nombre LIKE '%' + @Nombre + '%'
AND Apellido LIKE '%' + @Apellido + '%') S
ORDER BY Apellido, Nombre

Mi pregunta es: es posible devolver un valor 'Si' o 'No'en la misma
consulta, si se cumple que en una segunda tabla, tblMembresia, hay un
registro cuyo IdSocio se corresponde con el Id en tblSocio...

¿Se entiende?











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