SQL - Sql Plus - Oracle 11g | Unir los datos de varios registros en una sola fila

 
Vista:
Imágen de perfil de Pedro

Sql Plus - Oracle 11g | Unir los datos de varios registros en una sola fila

Publicado por Pedro (1 intervención) el 24/06/2017 01:57:43
Hola!! Tengo una duda usando Sql Plus con Oracle de la versión 11g. He estado buscando la solución pero no he podido tener resultado alguno.
Necesito hacer una consulta relacionando 4 tablas, las cuales son las siguientes:

-PELICULA
-DIRECTOR
-ACTOR
-ACTOR_PELICULA (Esta tabla relaciona a la tabla ACTOR con la tabla PELICULA solucionando la situación muchos a muchos)

La consulta que hago es la siguiente (no tiene errores de sintaxis):

1
2
3
4
5
6
SELECT P.ID, P.TITULO, P.GENERO,P.STOCK, D.NOMBRE AS "DIRECTOR", A.NOMBRE AS "ACTOR(ES)"
FROM PELICULA P, DIRECTOR D, ACTOR A, ACTOR_PELI AP
WHERE P.ID_DIRECTOR = D.ID
AND AP.ID_PELICULA = P.ID
AND AP.ID_ACTOR = A.ID
ORDER BY P.ID;

Captura-de-pantalla-12

Como se puede ver, la consulta me devuelve una tabla con 3 filas, pero lo que quiero es que me devuelva solo una fila y que los nombres de los tres actores aparezcan concatenados en una sola fila en la columna de ACTOR(ES).

De ante mano, muchísimas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Sql Plus - Oracle 11g | Unir los datos de varios registros en una sola fila

Publicado por Ricardo (1 intervención) el 25/06/2017 08:27:39
1
2
3
4
5
6
7
SELECT P.ID, P.TITULO, P.GENERO,P.STOCK, D.NOMBRE AS "DIRECTOR",
LISTAGG(A.NOMBRE, ', ') WITHIN GROUP (ORDER BY P.ID) "ACTOR(ES)"
FROM PELICULA P, DIRECTOR D, ACTOR A, ACTOR_PELI AP
WHERE P.ID_DIRECTOR = D.ID
AND AP.ID_PELICULA = P.ID
AND AP.ID_ACTOR = A.ID
GROUP BY P.ID, P.TITULO, P.GENERO,P.STOCK, D.NOMBRE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar