Ayuda con una consulta

22/03/2007 - 13:28 por Susana | Informe spam
Hola,
Tengo una consulta que no sé realizar. A ver si alguien, me pudiera ayudar.

Tengo 3 tablas:

tblA
CodigoArticulo int
Artículo nvarchar

tblB
CodigoArticulo int
CodigoMedico int

tblC
CodigoMedico int
Medico nvarchar

La tabla tblB relaciona los artículos (tblA) que han escrito los médicos
(tblC)
Lo que quiero, es hacer una consulta que me devuelva los artículos que ha
escrito un médico (where medico = 'quien sea'), pero que junto a la lista de
artículos escritos por el medico, aparezcan todos los autores de dicho
artículo.

ejemplo

tblA
1 "Articulo 1"
2 "Articulo 2"
3 "Articulo 3"

tblB
codigoArticulo codigoMedico
1 1
2 2
1 3

tblC
1 Enrique
2 José
3 Carlos

quiero obtener a partir de una consulta del tipo "select * from ... where
medico = "Enrique" lo siguiente:

codigoArticulo CodigoMedico Medico Articulo
1 1 Enrique "Articulo
1"
1 1 Carlos "Articulo
2"

A ver si alguien me ha entendido y me puede ayudar.
Gracias

Preguntas similare

Leer las respuestas

#1 Maxi
22/03/2007 - 13:29 | Informe spam
Hola, simplemente debes hacer left join entre las tablas y como se unen
entre si, lo has probado eso?


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Susana" escribió en el mensaje
news:%
Hola,
Tengo una consulta que no sé realizar. A ver si alguien, me pudiera
ayudar.

Tengo 3 tablas:

tblA
CodigoArticulo int
Artículo nvarchar

tblB
CodigoArticulo int
CodigoMedico int

tblC
CodigoMedico int
Medico nvarchar

La tabla tblB relaciona los artículos (tblA) que han escrito los médicos
(tblC)
Lo que quiero, es hacer una consulta que me devuelva los artículos que ha
escrito un médico (where medico = 'quien sea'), pero que junto a la lista
de artículos escritos por el medico, aparezcan todos los autores de dicho
artículo.

ejemplo

tblA
1 "Articulo 1"
2 "Articulo 2"
3 "Articulo 3"

tblB
codigoArticulo codigoMedico
1 1
2 2
1 3

tblC
1 Enrique
2 José
3 Carlos

quiero obtener a partir de una consulta del tipo "select * from ... where
medico = "Enrique" lo siguiente:

codigoArticulo CodigoMedico Medico Articulo
1 1 Enrique
"Articulo 1"
1 1 Carlos
"Articulo 2"

A ver si alguien me ha entendido y me puede ayudar.
Gracias

Respuesta Responder a este mensaje
#2 Susana
22/03/2007 - 13:54 | Informe spam
Hola Maxi,
No. No me funciona.
Porque al filtrar por el nombre del médico, solo aparecen aquellos autores
que tienen dicho nombre.
Y yo quiero que, a partir del nombre de un médico, salgan todos los
artículos que ha escrito. Y que, a cada artículo que salga, le salgan TODOS
sus autores.
En el ejemplo que puse, me sale "CARLOS" porque es coautor de un artículo
que escribió "ENRIQUE". Pero la consulta estaba buscando artículos escritos
por ENRIQUE. (CARLOS debe aparecer)

Gracias

"Maxi" escribió en el mensaje
news:
Hola, simplemente debes hacer left join entre las tablas y como se unen
entre si, lo has probado eso?


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Susana" escribió en el mensaje
news:%
Hola,
Tengo una consulta que no sé realizar. A ver si alguien, me pudiera
ayudar.

Tengo 3 tablas:

tblA
CodigoArticulo int
Artículo nvarchar

tblB
CodigoArticulo int
CodigoMedico int

tblC
CodigoMedico int
Medico nvarchar

La tabla tblB relaciona los artículos (tblA) que han escrito los médicos
(tblC)
Lo que quiero, es hacer una consulta que me devuelva los artículos que ha
escrito un médico (where medico = 'quien sea'), pero que junto a la lista
de artículos escritos por el medico, aparezcan todos los autores de dicho
artículo.

ejemplo

tblA
1 "Articulo 1"
2 "Articulo 2"
3 "Articulo 3"

tblB
codigoArticulo codigoMedico
1 1
2 2
1 3

tblC
1 Enrique
2 José
3 Carlos

quiero obtener a partir de una consulta del tipo "select * from ...
where medico = "Enrique" lo siguiente:

codigoArticulo CodigoMedico Medico Articulo
1 1 Enrique "Articulo 1"
1 1 Carlos "Articulo 2"

A ver si alguien me ha entendido y me puede ayudar.
Gracias





Respuesta Responder a este mensaje
#3 Maxi
22/03/2007 - 14:07 | Informe spam
porfavor pone como estas haciendo el select


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Susana" escribió en el mensaje
news:%
Hola Maxi,
No. No me funciona.
Porque al filtrar por el nombre del médico, solo aparecen aquellos autores
que tienen dicho nombre.
Y yo quiero que, a partir del nombre de un médico, salgan todos los
artículos que ha escrito. Y que, a cada artículo que salga, le salgan
TODOS sus autores.
En el ejemplo que puse, me sale "CARLOS" porque es coautor de un artículo
que escribió "ENRIQUE". Pero la consulta estaba buscando artículos
escritos por ENRIQUE. (CARLOS debe aparecer)

Gracias

"Maxi" escribió en el mensaje
news:
Hola, simplemente debes hacer left join entre las tablas y como se unen
entre si, lo has probado eso?


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Susana" escribió en el mensaje
news:%
Hola,
Tengo una consulta que no sé realizar. A ver si alguien, me pudiera
ayudar.

Tengo 3 tablas:

tblA
CodigoArticulo int
Artículo nvarchar

tblB
CodigoArticulo int
CodigoMedico int

tblC
CodigoMedico int
Medico nvarchar

La tabla tblB relaciona los artículos (tblA) que han escrito los médicos
(tblC)
Lo que quiero, es hacer una consulta que me devuelva los artículos que
ha escrito un médico (where medico = 'quien sea'), pero que junto a la
lista de artículos escritos por el medico, aparezcan todos los autores
de dicho artículo.

ejemplo

tblA
1 "Articulo 1"
2 "Articulo 2"
3 "Articulo 3"

tblB
codigoArticulo codigoMedico
1 1
2 2
1 3

tblC
1 Enrique
2 José
3 Carlos

quiero obtener a partir de una consulta del tipo "select * from ...
where medico = "Enrique" lo siguiente:

codigoArticulo CodigoMedico Medico Articulo
1 1 Enrique "Articulo 1"
1 1 Carlos "Articulo 2"

A ver si alguien me ha entendido y me puede ayudar.
Gracias









Respuesta Responder a este mensaje
#4 Carlos M. Calvelo
22/03/2007 - 15:27 | Informe spam
On 22 mrt, 13:28, "Susana" wrote:
Hola,
Tengo una consulta que no sé realizar. A ver si alguien, me pudiera ayudar.

Tengo 3 tablas:

tblA
CodigoArticulo int
Artículo nvarchar

tblB
CodigoArticulo int
CodigoMedico int

tblC
CodigoMedico int
Medico nvarchar

La tabla tblB relaciona los artículos (tblA) que han escrito los médicos
(tblC)
Lo que quiero, es hacer una consulta que me devuelva los artículos que ha
escrito un médico (where medico = 'quien sea'), pero que junto a la lista de
artículos escritos por el medico, aparezcan todos los autores de dicho
artículo.

ejemplo

tblA
1 "Articulo 1"
2 "Articulo 2"
3 "Articulo 3"

tblB
codigoArticulo codigoMedico
1 1
2 2
1 3

tblC
1 Enrique
2 José
3 Carlos

quiero obtener a partir de una consulta del tipo "select * from ... where
medico = "Enrique" lo siguiente:

codigoArticulo CodigoMedico Medico Articulo
1 1 Enrique "Articulo
1"
1 1 Carlos "Articulo
2"

A ver si alguien me ha entendido y me puede ayudar.
Gracias



Susana,
A ver si yo te he entendido:

select a.CodigoArticulo, b.CodigoMedico, a.Articulo, c.Medico
from tblA a join tblB b on a.CodigoArticulo = b.CodigoArticulo
join tblC c on b.CodigoMedico = c.CodigoMedico
where a.CodigoArticulo in
(select b2.CodigoArticulo
from tblB b2 inner join tblC c2 on b2.CodigoMedicoÂ.CodigoMedico
where c2.Medico = 'Enrique')

Saludos,
Carlos
Respuesta Responder a este mensaje
#5 Susana
22/03/2007 - 17:42 | Informe spam
exacto!
Yo estaba intentado hacerlo con EXISTS pero no encontraba la forma.
Muchas gracias.


"Carlos M. Calvelo" escribió en el mensaje
news:
On 22 mrt, 13:28, "Susana" wrote:
Hola,
Tengo una consulta que no sé realizar. A ver si alguien, me pudiera
ayudar.

Tengo 3 tablas:

tblA
CodigoArticulo int
Artículo nvarchar

tblB
CodigoArticulo int
CodigoMedico int

tblC
CodigoMedico int
Medico nvarchar

La tabla tblB relaciona los artículos (tblA) que han escrito los médicos
(tblC)
Lo que quiero, es hacer una consulta que me devuelva los artículos que ha
escrito un médico (where medico = 'quien sea'), pero que junto a la lista
de
artículos escritos por el medico, aparezcan todos los autores de dicho
artículo.

ejemplo

tblA
1 "Articulo 1"
2 "Articulo 2"
3 "Articulo 3"

tblB
codigoArticulo codigoMedico
1 1
2 2
1 3

tblC
1 Enrique
2 José
3 Carlos

quiero obtener a partir de una consulta del tipo "select * from ... where
medico = "Enrique" lo siguiente:

codigoArticulo CodigoMedico Medico Articulo
1 1 Enrique
"Articulo
1"
1 1 Carlos
"Articulo
2"

A ver si alguien me ha entendido y me puede ayudar.
Gracias



Susana,
A ver si yo te he entendido:

select a.CodigoArticulo, b.CodigoMedico, a.Articulo, c.Medico
from tblA a join tblB b on a.CodigoArticulo = b.CodigoArticulo
join tblC c on b.CodigoMedico = c.CodigoMedico
where a.CodigoArticulo in
(select b2.CodigoArticulo
from tblB b2 inner join tblC c2 on b2.CodigoMedicoÂ.CodigoMedico
where c2.Medico = 'Enrique')

Saludos,
Carlos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida