Autor |
Mensaje |
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Tener Un Registro De Varios Registros
Qué tal,
Tengo una tabla como la siguiente:
- userID; authID; authName
- 001; A0001; "auth 01"
- 001; A0002; "auth 02"
- 001; A0003; "auth 03"
- 002; A0001; "auth 01"
- 002; A0002; "auth 02"
- 003; A0001; "auth 01"
-
Quisiera agrupar de cierta forma los authID y los authName en un solo registro (separados con dos puntos : ), algo como:
- userID; authID; authName
- 001; A0001:A0002:A0003; "auth 01":"auth 02":"auth 03"
- 002; A0001:A0002; "auth 01":"auth 02"
- 003; A0001; "auth 01"
-
Qué consulta podría usar? Qué instrucción investigo?
Espero puedan darme una luz. Saludos.
|
#1 Lunes, 13 Marzo 2017, 02:25 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Tener Un Registro De Varios Registros
mmmm no creo que haya una instrucción que te haga eso de una. Es mucho más simple hacer una tabla nueva vacía y un bucle sobre la tabla vieja que recorra los registros ordenados por userid y authid y vaya rellenando la nueva.
Luego, una vez verificado que tiene lo que querías, eliminas la vieja y renombras la nueva y ya está.
=================== No podemos regresar
|
#2 Lunes, 13 Marzo 2017, 10:53 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Tener Un Registro De Varios Registros
razaAztk escribió: Qué tal, Tengo una tabla como la siguiente:
razaAztk, podes usar vistas para eso y luego concatenas campos con la forma campo1 || ':' || campo2 As concatenacion1y2
Esto funciona para sqlite, las demás bases de datos supongo que serán similares.
CREATE VIEW "direcciones" AS
SELECT
id,
name,
last,
nik,
birth,
name || ':' || last AS nombrecompleto
FROM contactos
Saludos.
|
#3 Lunes, 13 Marzo 2017, 21:52 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Tener Un Registro De Varios Registros
tincho escribió: razaAztk escribió: Qué tal, Tengo una tabla como la siguiente:
razaAztk, podes usar vistas para eso y luego concatenas campos con la forma campo1 || ':' || campo2 As concatenacion1y2
Esto funciona para sqlite, las demás bases de datos supongo que serán similares.
CREATE VIEW "direcciones" AS
SELECT
id,
name,
last,
nik,
birth,
name || ':' || last AS nombrecompleto
FROM contactos
Saludos.
Eso no funcionaría. No se trata de concatenar campos de texto dentro del mismo registro, se trata de unificar registros en uno solo. Se puede hacer con sentencias SQL si se sabe el número exacto de registros que por cada registro que se pueda reunir, pero no creo que valga la pena romperse el coco con eso cuando un simple bucle de gambas te soluciona el problema.
=================== No podemos regresar
|
#4 Martes, 14 Marzo 2017, 09:10 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Tener Un Registro De Varios Registros
shordi escribió: Eso no funcionaría. No se trata de concatenar campos de texto dentro del mismo registro, se trata de unificar registros en uno solo. Se puede hacer con sentencias SQL si se sabe el número exacto de registros que por cada registro que se pueda reunir, pero no creo que valga la pena romperse el coco con eso cuando un simple bucle de gambas te soluciona el problema.
Ok, si lo entendi mal.
Las solucion esta en un post de Stack overflow
SubjectID StudentName
---------- -------------
1 Mary
1 John
1 Sam
2 Alaina
2 Edward
Result I expected was:
SubjectID StudentName
---------- -------------
1 Mary, John, Sam
2 Alaina, Edward
SELECT Main.SubjectID,
LEFT(Main.Students,Len(Main.Students)-1) AS "Students"
FROM
(
SELECT DISTINCT ST2.SubjectID,
(
SELECT ST1.StudentName + ',' AS [text()]
FROM dbo.Students ST1
WHERE ST1.SubjectID = ST2.SubjectID
ORDER BY ST1.SubjectID
FOR XML PATH ('')
) [Students]
FROM dbo.Students ST2
) [Main]
He agregado este ejemplo en el articulo de nuestra wiki, para verlo ir al final del siguiente post:
https://foro.gambas-es.org/viewtopic.php?f=7&t=6070&highlight=
Saludos.
última edición por tincho el Martes, 14 Marzo 2017, 12:03; editado 1 vez
|
#5 Martes, 14 Marzo 2017, 10:51 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Tener Un Registro De Varios Registros
Tincho +1
=================== No podemos regresar
|
#6 Martes, 14 Marzo 2017, 14:54 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Tener Un Registro De Varios Registros
Citar: Las solucion esta en un post de Stack overflow
Muy intersante!!!, Tincho +1
|
#7 Martes, 14 Marzo 2017, 21:25 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Tener Un Registro De Varios Registros
Pregunta ¿funciona con sqlite?
A mi me da errores:
Citar: SQLiteManager: Likely SQL syntax error: SELECT DISTINCT ES2.indx,
SUBSTRING(
(
SELECT ':'+ES1.nombre AS [text()]
FROM estudiantes ES1
WHERE ES1.indx = ES2.indx
ORDER BY ES1.indx
FOR XML PATH ('')
), 2, 1000) [estudiantes]
FROM estudiantes ES2 [ near "FOR": syntax error ]
Exception Name: NS_ERROR_FAILURE
Exception Message: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [mozIStorageConnection.createStatement]
|
#8 Miercoles, 15 Marzo 2017, 11:11 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Tener Un Registro De Varios Registros
No lo he probado pero, ahora que lo dices, no creo que funcione... hay ahí cosas que nunca he visto en SQLite.
Si luego tengo un rato le echo un vistazo.
Saludos
=================== No podemos regresar
|
#9 Miercoles, 15 Marzo 2017, 13:57 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Tener Un Registro De Varios Registros
jsbsan escribió: ...¿funciona con sqlite?A mi me da errores...
Para SQLite, por lo que he leido hay que usar GROUP_CONCAT, nuevamente en stackoverflow hay un ejemplo.
Saludos.
|
#10 Miercoles, 15 Marzo 2017, 15:15 |
|
|
|