Tener Un Registro De Varios Registros


Ir a la página 1, 2  Siguiente

Objetivo: Tener Un Registro De Varios Registros
Qué tal,

Tengo una tabla como la siguiente:

Código: [Descargar] [Ocultar]
  1. userID; authID; authName 
  2. 001; A0001; "auth 01" 
  3. 001; A0002; "auth 02" 
  4. 001; A0003; "auth 03" 
  5. 002; A0001; "auth 01" 
  6. 002; A0002; "auth 02" 
  7. 003; A0001; "auth 01" 
  8.  


Quisiera agrupar de cierta forma los authID y los authName en un solo registro (separados con dos puntos : ), algo como:

Código: [Descargar] [Ocultar]
  1. userID; authID; authName 
  2. 001; A0001:A0002:A0003; "auth 01":"auth 02":"auth 03" 
  3. 002; A0001:A0002; "auth 01":"auth 02" 
  4. 003; A0001; "auth 01" 
  5.  


Qué consulta podría usar? Qué instrucción investigo?

Espero puedan darme una luz. Saludos.

Objetivo: 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á.

Perfil MP  
Objetivo: 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.

Perfil MP  
Objetivo: 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.

Perfil MP  
Objetivo: 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
Perfil MP  
Objetivo: Re: Tener Un Registro De Varios Registros
Tincho +1

Perfil MP  
Objetivo: Re: Tener Un Registro De Varios Registros
Citar:
Las solucion esta en un post de Stack overflow


Muy intersante!!!, Tincho +1

Objetivo: 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]

Objetivo: 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

Perfil MP  
Objetivo: 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.

Perfil MP  
Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4408s (PHP: -74% SQL: 174%)
Consultas SQL: 46 - Debug off - GZIP Activado