Autor Tema: Consulta en SQL server  (Leído 8086 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado madolfo

  • Sv Member
  • ***
  • Mensajes: 155
Consulta en SQL server
« : enero 08, 2009, 02:21:56 pm »
Buenas tardes a todos


Me ha surgido una duda con respecto a algo. Sera que se puede realizar una consulta q te devuelva un resultado de concatenacion de 2 tablas.. detallo el ejemplo

Tabla 1
IDP   Nombre     Valor
1      xxxxx          5
2      yyyyy          3
3      dddd           8

Tabla 2
IDReg        IDOPort         IDP       
1                 1                1
2                 1                2
3                 1                3
4                 2                2
5                 2                3
6                 3                1

Tonces lo q necesito es que al hacer la relacion de las 2 tablas por medio del campo IDP, pueda crear un nuevo campo Concatenado llamado "XCampo" y contenga el nombre segun el IDP, Resultado q me gustaria tener?.

IDOPort          XCampo
1                     xxxxx, yyyyy,  dddd
2                     yyyyy, dddd
3                     xxxxx

Al final necesito una relacion horizontal de los detalles registrados en IDOport, en ves de q sea vertical que es lo mas comun?, tonces dicho resultado me gustaria saber si se puede obtener a traves de una sola consulta? o como?

De antemano gracias por la ayuda q me puedan brindar  :thumbsup:

Desconectado obser7er

  • The Communiter-
  • *
  • Mensajes: 4728
  • ferg(at)pcpimpz.com
    • PcPimpz Gamer Store - sucursal SVC
Re: Consulta en SQL server
« Respuesta #1 : enero 08, 2009, 02:38:52 pm »
Para no hacerte la tarea, te dejo el siquiente link:
http://sqlcourse2.com/select2.html

Más info en:
http://www.sqlcourse.com/

http://www.sqlcourse2.com/
info: ferg(at)pcpimpz.com
Newegg|TigerDirect|Amazon|Directron|DELL-USATODO NUEVO Y SELLADO - Mandar a traer HW no es más barato pero es lo mejor!

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: Consulta en SQL server
« Respuesta #2 : enero 08, 2009, 02:43:25 pm »
podes hacer el uso del inner join en tu cosulta select..... si no sabes como se usa... avisanos!  :thumbsup:


Como lo haria yo??

[spoiler]
SELECT B.IDOPORT, A.NOMBRE AS 'XCAMPO' FROM tabla1 AS 'A' INNER JOIN tabla2 AS 'B' ON A.IDP = B.IDP
[/spoiler]
« Última Modificación: enero 08, 2009, 02:48:25 pm por JGuillen™ »

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: Consulta en SQL server
« Respuesta #3 : enero 08, 2009, 02:54:46 pm »
jeeeee.... no entendí XD

dices que quieres una relación horizontal, pero según tu ejemplo, haces una relación vertical.....

Datos
Código: [Seleccionar]
IDP   Nombre     Valor
1      xxxxx          5
2      yyyyy          3
3      dddd           8
Resultado
Código: [Seleccionar]
IDOPort          XCampo
1                     xxxxx, yyyyy,  dddd
2                     yyyyy, dddd
lo anterior para mí es una relación vertical.... poque juntas [concatenar] los valores de dos registros [filas] diferentes, porque el valor "xxxx" y el valor "yyyyy" estan en la tabla1 en dos registros diferentes

estoy en lo correcto? o no entendí bien ?¿



otra cosa, si queres en un resultado concatenar dos contenidos de dos tablas diferentes, algo así como si tuvieras el nombre y apellido en tablas diferentes

tabla Nombres
cod   nombre
1      saul
2      jose


tabla Apellidos
cod   apelido
1      stupinian
2      santos



una relación horizontal para mí quedaría así,
cod    nombreYapellido
1      saul stupinan
2      jose santos

mediante un script así

select a.cod, a.nombre+' '+b.apellido
from nombres as a, apellidos as b
where a.cod=b.cod
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado madolfo

  • Sv Member
  • ***
  • Mensajes: 155
Re: Consulta en SQL server
« Respuesta #4 : enero 08, 2009, 03:02:53 pm »
podes hacer el uso del inner join en tu cosulta select..... si no sabes como se usa... avisanos!  :thumbsup:


Como lo haria yo??

[spoiler]
SELECT B.IDOPORT, A.NOMBRE AS 'XCAMPO' FROM tabla1 AS 'A' INNER JOIN tabla2 AS 'B' ON A.IDP = B.IDP
[/spoiler]

Simon pero al hacerlo de esa forma me devuelve 6 registros, y yo solo necesito 3 nada mas... ya que el "XCampo" debe de contener todos los valores de la 2 tabla solo q separados por ","    :thumbsup:



Para Tekun

Es q lo norma es hacer la relacion vertical, pero yo no necesito eso al final lo q necesito es obtener de la tabla 2 agrupadamente el IDOPort y el 2 campo saldria de todos los registros q posee el IDOport por eso fue que puse este resultado


IDOPort          XCampo
1                     xxxxx, yyyyy,  dddd
2                     yyyyy, dddd
3                     xxxxx

porque en el campo "XCampo" pondre los nombres segun el valor de IDP de la tabla 2, pero al hacer la consulta necesito q me los devuelva como el ejemplo q pongo, obtener nada mas 3 registro de 6 q tengo en la 2 tabla?

 :thumbsup:  :thumbsup:

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: Consulta en SQL server
« Respuesta #5 : enero 08, 2009, 06:28:24 pm »
uta, no te entiendo colocho x_x

no entiendo la relación de tus tablas, querés mostrar datos de registros de forma agrupada?
hasta me pierdo con el campo que querés hacer la relación, con cual es?


creo que sería más facil con nombres de campos y valores en las tablas un pelín diferentes, porque esos nombres, disculpame, pero esta super fumados viejo....
haceme el ejemplo un poco más fácil de entender porque aquí en el trabajo tengo unos despijes que me vuelven algo lento para pensar en otras ondas .....
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado madolfo

  • Sv Member
  • ***
  • Mensajes: 155
Re: Consulta en SQL server
« Respuesta #6 : enero 09, 2009, 09:16:05 am »
Bueno sres gracias a todos por sus respuestas..... al final pude resolver mi problema mediante una funcion y un puntero... dejo las imagenes del resultado final....   :thumbsup:

Antes
[spoiler][/spoiler]

Si agrupaba el resultado de arriba no obtendria lo mismo de abajo, ya q en la columna de productos solo hubiera tenido un producto por oportunidad  :thumbsup: ... pero al final llegue a lo q necesitaba que era esto

Resultado deseado
[spoiler][/spoiler]


 :thumbsup: