Foros del Web » Programando para Internet » ASP Clásico »

Alterar relación 1 a varios

Estas en el tema de Alterar relación 1 a varios en el foro de ASP Clásico en Foros del Web. Supongamos una estructura simple... tabla provincias y tabla municipios (uno a varios). Se puede hacer una sentencia SQL que devuelva el elemento "varios" en un ...
  #1 (permalink)  
Antiguo 21/12/2005, 13:54
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Alterar relación 1 a varios

Supongamos una estructura simple... tabla provincias y tabla municipios (uno a varios).
Se puede hacer una sentencia SQL que devuelva el elemento "varios" en un único campo separado por comas?

O sea, haciendo un join normal quedaría:

Código:
Provincia    | Municipio
Buenos Aires | Adolfo Alsina
Buenos Aires | Adolfo González Chávez
Buenos Aires | ...
Catamarca    | Aconquija
Catamarca    | Andalgalá
Catamarca    | ...

Y quisiera que quede:

Código:
Provincia    | ArrayDeMunicipios
Buenos Aires | Adolfo Alsina, Adolfo González Chávez, ...
Catamarca    | Aconquija, Andalgalá, ...
__________________
...___...
  #2 (permalink)  
Antiguo 21/12/2005, 15:23
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Pues no se si con solo SQL se pueda, pero si estas usando SQL-Server, puedes hacer un SP que mediante un cursor forme lo que deseas.

Si quieres te ayudo a hacer el SP.

Saludos
  #3 (permalink)  
Antiguo 21/12/2005, 15:30
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Vaya, ahora si la pusiste complicada...si, quizas como dice el maestro tiguron, pero no se que tan eficiente sea utilizar cursores contra crear metodos que devuelvan arreglos...

Ademas nunca le he entendido bien a los condenados cursores je je je
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 21/12/2005, 15:44
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Gracias.
Para este caso estoy usando access, por lo tanto no puedo usar SP's :(

estoy probando algo, pero creo que es una locura. Ya les digo.
__________________
...___...
  #5 (permalink)  
Antiguo 21/12/2005, 15:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Jojojo, si es una locura.

Código:
TRANSFORM First(Municipios.MUNICIPIO) AS PrimeroDeMUNICIPIO
SELECT Provincias.PROVINCIA
FROM Provincias INNER JOIN Municipios ON Provincias.ID_PROVINC = Municipios.ID_PROVINC
WHERE (((Provincias.PROVINCIA)="buenos aires")) OR (((Provincias.PROVINCIA)="catamarca"))
GROUP BY Provincias.PROVINCIA
PIVOT Municipios.MUNICIPIO
Eso devuelve:
Código:
PROVINCIA     | Aconquija | Adolfo Alsina | Adolfo Gonzales Chaves | Alberti | Almirante Brown | Ancasti
Buenos Aires  |           | Adolfo Alsina | Adolfo Gonzales Chaves | Alberti | Almirante Brown | 
Catamarca     | Aconquija |               |                        |         |                 | Ancasti
__________________
...___...
  #6 (permalink)  
Antiguo 21/12/2005, 18:04
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 3 meses
Puntos: 98
Pero que es eso? la verdad que no le entiendo je je je je, pero que bueno que funcione!

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 21/12/2005, 18:21
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Nonono... eso, si bien fue una prueba tipo aproach, es una reverenda merda!
Imaginá que me devolvería casi 2200 campos. Cosa no soportada al menos por access (por eso filtré 2 provincias... porque si no colocaba el where me mandaba a freir churros)
__________________
...___...
  #8 (permalink)  
Antiguo 22/12/2005, 08:06
Avatar de buliwyf  
Fecha de Ingreso: diciembre-2001
Ubicación: Caracas
Mensajes: 221
Antigüedad: 23 años, 3 meses
Puntos: 1
... y dios dijo... hágase getrows... y vio que era bueno!

<%

sql="Select loquesea from tabla"
set rs=con.execute(sql)
dataenarray=rs.getrows

' para mostrarlo

for i=0 to ubound(dataenarray)
response.write dataenarray(i) & "<br>"
next

rs.close


espero que te ayude
__________________
RTFM antes de preguntar...
  #9 (permalink)  
Antiguo 22/12/2005, 08:26
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
¿TRANSFORM? ¿PIVOT?, me pregunto si serán instrucciones SQL ANSI, jeje

Ua vez una MVP de Microsoft me dijo: "muestrame a alguien que usa cursores y te mostraré a alguien con procedimientos ineficientes", claro que eso me ha hecho que intente no usarlos, pero a veces no veo otra forma para obtener lo que deseo.
Y cierto, como dice U_G, supongo que crear metodos que devuelvan arreglos es mejor, pero el chiste era hacerlo desde el motor de BD's, jejeje.

Por cierto, habría que modificar el algorítmo con getrows para mostrarlo como A_Z desea, no es con solo ese for.

Saludos
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 16:29.