Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Error en group_concat (separator " - ")

Estas en el tema de Error en group_concat (separator " - ") en el foro de Bases de Datos General en Foros del Web. Buenas a todos, estoy haciendo uso de la sentencia group concat para realizar una consulta con las siguientes tablas: Tengo la tabla bebidas @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 23/11/2009, 15:32
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
De acuerdo Error en group_concat (separator " - ")

Buenas a todos,
estoy haciendo uso de la sentencia group concat para realizar una consulta con las siguientes tablas:

Tengo la tabla bebidas

Código sql tabla bebidas:
Ver original
  1. create table BEBIDAS
  2. (
  3.    COD_BEB              char(6) not null,
  4.    COD_TIP_BEB          char(5) not null,
  5.    NOM_BEB              varchar(25),
  6.    VAL_BEB              float(6),
  7.    PRESEN_BEB           char(20),
  8.    primary key (COD_BEB)
  9. );


La tabla discoteca

Código sql discoteca:
Ver original
  1. create table DISCOTECA
  2. (
  3.    NIT_DISCO            char(6) not null,
  4.    NOM_DISCO            varchar(60),
  5.    DIR_DISCO            varchar(60),
  6.    CAP_DISCO            int,
  7.    VAL_ENT_DISCO        float(6),
  8.    primary key (NIT_DISCO)
  9. );

entre estas dos tabla hice una relacion mucho a muchos y por tanto se genero una tabla hija:

Código sql bebidas_discoteca:
Ver original
  1. create table BEBIDAS_DISCOTECA
  2. (
  3.    NIT_DISCO            char(6) not null,
  4.    COD_BEB              char(6) not null,
  5.    primary key (NIT_DISCO, COD_BEB)
  6. );

Ahora hago la siguiente consulta:

Código sql consulta:
Ver original
  1. SELECT nit_disco, group_concat(cod_beb separator " - ") cod_beb FROM  bebidas_discoteca GROUP BY nit_disco


Asi obtengo el resultado de las bebidas de cada una de las discotecas, separados por guion, pero solo traigo codigos

Lo que deseo es traer los nombres tanto de la discoteca, como de las bebidas

he realizado la siguiente consulta pero me muestra error en la sintaxis

Código sql consulta dos:
Ver original
  1. SELECT d.nom_disco, group_concat(b.nom_beb separator " - ") FROM discoteca as d, bebidas as b, bebidas_discoteca as bd WHERE d.nit_disco=bd.nit_disco and b.cod_beb=bd.cod_beb;

Que tengo mal en mi sintaxis???
  #2 (permalink)  
Antiguo 23/11/2009, 16:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error en group_concat (separator " - ")

Prueba así:
Código sql:
Ver original
  1. SELECT
  2.     d.nom_disco,
  3.     group_concat(b.nom_beb separator ' - ')  bebidas
  4. FROM discoteca d
  5.     INNER JOIN bebidas_discoteca bd USING(nit_disco)
  6.     INNER JOIN bebidas b USING(cod_beb);

Cosas a tener en cuenta:
- Las relaciones entre tablas se realizan por medio de JOIN, con todas sus variantes, y la cláusula ON. No en el WHERE. La razón es simple: las relaciones establecidas en el FROM son optimizables por el DBMS, las del WHERE no.
- Si se usa INNER JOIN entre dos tablas, sólo devolverá los registros que contengan coincidencias, si se quiere incluir los que no coinciden, hay que usar LEFT JOIN o RIGHT JOIN.
- Si se realiza un INNER JOIN entre tres tablas, devolverá datos si hay coincidencia en las tres si o sí. Si existe una relación parcial, no la devolverá; hay que usar LEFT JOIN o RIGHT JOIN.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 12:06.