Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Consulta anidada

Estas en el tema de Consulta anidada en el foro de SQL Server en Foros del Web. Hola a todos Mi consulta es la siguiente: SELECT se.Id_serv serv, se.Id_resp tecnico, us.Nombre nombre FROM Servicios se LEFT JOIN Usuarios us ON (us.Id_usu=se.Id_usu) WHERE ...
  #1 (permalink)  
Antiguo 22/08/2006, 10:36
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 19 años, 1 mes
Puntos: 0
Consulta anidada

Hola a todos

Mi consulta es la siguiente:
SELECT se.Id_serv serv, se.Id_resp tecnico, us.Nombre nombre
FROM Servicios se
LEFT JOIN Usuarios us ON (us.Id_usu=se.Id_usu)
WHERE us.Id_usu='".$_SESSION['Id']."'

Ahora explico.

En mi tabla de servicios llevo el registro de los servicios que se prestaron a los usuarios y quien fue el tecnico que los atendio. Las dos personas, tanto usuarios como tecnicos estan almacenados en la tabla de usuarios.

Lo que hago en esta consulta es jalar el nombre del usuario al que se presto el servicio donde us.Id_usu sea igual '".$_SESSION['Id']."' (datos que obtengo a traves de un formulario).

Por otro lado me gustaria tambien obtener el nombre de la persona que los atendio en la misma consulta creando asi un tipo de consulta anidada.

El problema aqui es que como ven, la clave del usuario la conosco pero la clave del tecnico no. Mas sin embargo lo puedo obtener en la consulta de arriba.

Lo que no quisiera es hacer otra consulta mas utilizando la clave del tecnico y volver a generar otra conexion con la BD y demas. Quisiera anidar la consulta utilizando el campo "se.Id_resp tecnico" para obtener el nombre del tecnico. Lo que no se es como crearla.

He leido que se pueden utilizar las funciones como IN, ANY, SOME, etc. Pero a lo que pude ver, estos afectan el resultado de la consulta. Realmente no los he utilizado pero de poder utilizarlos sin afectar el resultado de mi consulta, cual seria el mejor?

De antemano gracias
Salu2
  #2 (permalink)  
Antiguo 05/09/2006, 15:50
Avatar de SeriketZu  
Fecha de Ingreso: septiembre-2006
Ubicación: Mendoza, Argentina
Mensajes: 78
Antigüedad: 17 años, 7 meses
Puntos: 0
Espero haber entendido lo que querés hacer, te hago un ejemplo de lo que entendí que querés:

Tabla: Técnicos
Campos: ID, Nombre, Teléfono

Tabla: Usuarios
Campos: ID, Nombre, Teléfono, IDTécnico

Lo que entendí es que sabes el ID del usuario y quieres obtener el nombre del técnico utilizando una sola consulta. Esta sería:

SELECT Nombre FROM Técnicos WHERE ID=(SELECT IDTécnico FROM Usuarios WHERE ID=@IDUsuarios)

donde @IDUsuario es el dato que tenés.

Espero que sea lo que necesitabas y con esto te haya quedado claro.

Saludos.
  #3 (permalink)  
Antiguo 05/09/2006, 16:04
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Código:
SELECT   se.Id_serv serv             -- Id Servicio
       , se.Id_resp NumTecnico       -- Clave de tecnico
       , te.Nombre NombreTecnico   -- Nombre del tecnico
       , se.Id_usu NumUsuario         -- Clave del usuario 
       , us.Nombre NombreUsuario    -- Nombre del usuario
FROM Servicios se (nolock)
LEFT JOIN Usuarios us (nolock) ON (se.Id_usu  = us.Id_usu)
LEFT JOIN Usuarios te (nolock) ON (se.Id_resp = te.Id_usu)
WHERE se.Id_usu= @UserId

Última edición por Andres95; 05/09/2006 a las 16:12
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:03.