SQL - Ayuda Con Agrupamiento de registros

   
Vista:
Imágen de perfil de jonathan

Ayuda Con Agrupamiento de registros

Publicado por jonathan (3 intervenciones) el 07/06/2015 23:34:31
hola que tal, antes que nada buenas tardes.

Se me presento un problema y no se como solucionarlo e intentado distintas formas pero sin exito

Antes que nada les muestro la relacion de las tablas involucradas en la sentencia

bd2
1
2

ahora el codigo que tengo es el sig:

bd1

por ultimo el ppequeño inconveniente es el sig:

bd3

como vemos en la ultima imagen tengo que el libro con isbn 9789871609215 se repite 3 veces, ya que tiene 3 autores,
los cuales estan ingresados en la tabla de arl_tab donde en un registro distinto tengo un autor,
ahora retomando la ultima imagen deseo que el libro de isbn 9789871609215 se agrupe en un solo reguistro y en el campo de autores me muestre lo sig: autor1,autor2, autor3 (en un solo campo) y no individual como lo muestra la imagen

lenguaje donde estoy programando es PHP
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

Ayuda Con Agrupamiento de registros

Publicado por Rafael (83 intervenciones) el 08/06/2015 14:52:52
Como siempre en este foro... ayudaria saber que Motor de BBDD usas... ORACLE???

Bueno al lio primero que nada por que CROSS JOIN??? y no simplemente JOIN o INNER JOIN, creo que para lo que buscas esta fuera de contexto..

Y por ultimo hay modos en el foro para encapsular el codigo y no poner una imagen que no podamos editar el resto y ayudarte mejor...

Bueno despues de los consejos que no regaños te cuento ...

En ORACLE
Hay una funcion que te hace lo que necesitas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT campo1
      , campo2
      , campo3
      , campo4
...
     , LISTAGG(autores, ', ') WITHIN GROUP (ORDER BY isbn) AS Autores
FROM ...
           JOIN ...
WHERE ...
GROUP BY campo1
      , campo2
      , campo3
      , campo4
...

Como veras si hubieras colocado tu codigo en texto cuando menos... te hubiera dado una sentencia completa... como es una imagen y no la picare toda... pues espero esto te ayude... si no es ORACLE dime que motor es que te doy la alternativa ...

Saludos
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
Imágen de perfil de jonathan

Ayuda Con Agrupamiento de registros

Publicado por jonathan (3 intervenciones) el 09/06/2015 07:34:29
O si perdon rafael estoy utilizando MYSQL

y tu ejemplo fue de mucha ayuda ya que al buscar una funcion similar a la que utilizas me encontre con GROUP_CONCAT.

Te lo agradesco mucho Rafael y en cuanto a los cross, soy nuevo progrando php y en sql(soy novato) en tonces mire que me soluciono mi problema y lo integre pero provare con el join o inner join.
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
Imágen de perfil de jonathan

Ayuda Con Agrupamiento de registros

Publicado por jonathan (3 intervenciones) el 09/06/2015 08:29:21
por ultimo rafael disculpa que te moslete nuevamente, miro que usas una funcion llamada within group, hay un similar a esta en mysql.
Esta es mi sentencia, la verdad pense que sera facil utilizar el concat pero al parecer seme esta complicando, ya que no se como utilizarlo, ya que mie algunos ejemplos pero concatenan campos del mismo registro no de registros distintos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SELECT
libros_tab.isbn,
libros_tab.titulo,
libros_tab.categoria,
idiomas_tab.nombre_idioma,
editoriales_tab.nombre_editorial,
carreras_tab.nombre_carrera,
inventario_tab.total_disponibles,
planteles_tab.nombre_plantel,
libros_tab.edicion,
libros_tab.lyf_elaboracion,
libros_tab.lyf_traduccion,
libros_tab.paginas,
libros_tab.imagenes,
libros_tab.resumen,
libros_tab.portada,
autores_tab.nombre_autor
FROM libros_tab
JOIN inventario_tab on libros_tab.id_libro = inventario_tab.id_libro
JOIN idiomas_tab on libros_tab.id_idioma = idiomas_tab.id_idioma
JOIN editoriales_tab on libros_tab.id_editorial = editoriales_tab.id_editorial
JOIN carreras_tab on libros_tab.id_carrera = carreras_tab.id_carrera
JOIN planteles_tab on inventario_tab.id_plantel = planteles_tab.id_plantel
JOIN arl_tab on libros_tab.isbn = arl_tab.isbn
JOIN autores_tab on arl_tab.id_autor = autores_tab.id_autor
WHERE libros_tab.titulo LIKE '%a%'

y abusando de tu ayuda como podria hacer LIKE a mas de 2 campos, ya que deseo hacer like a autor, al titulo, isbn, editorial, resumen, idioma.

Espero y puedas ayudarme gracias de antemano
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

Ayuda Con Agrupamiento de registros

Publicado por Rafael (83 intervenciones) el 09/06/2015 09:19:43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
SELECT
libros_tab.isbn,
libros_tab.titulo,
libros_tab.categoria,
idiomas_tab.nombre_idioma,
editoriales_tab.nombre_editorial,
carreras_tab.nombre_carrera,
inventario_tab.total_disponibles,
planteles_tab.nombre_plantel,
libros_tab.edicion,
libros_tab.lyf_elaboracion,
libros_tab.lyf_traduccion,
libros_tab.paginas,
libros_tab.imagenes,
libros_tab.resumen,
libros_tab.portada,
autores_tab.nombre_autor
FROM libros_tab
JOIN inventario_tab on libros_tab.id_libro = inventario_tab.id_libro
JOIN idiomas_tab on libros_tab.id_idioma = idiomas_tab.id_idioma
JOIN editoriales_tab on libros_tab.id_editorial = editoriales_tab.id_editorial
JOIN carreras_tab on libros_tab.id_carrera = carreras_tab.id_carrera
JOIN planteles_tab on inventario_tab.id_plantel = planteles_tab.id_plantel
JOIN arl_tab on libros_tab.isbn = arl_tab.isbn
JOIN autores_tab on arl_tab.id_autor = autores_tab.id_autor
WHERE libros_tab.titulo LIKE '%a%
AND autores_tab.nombre_autor LIKE '%b%'
AND ...

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