Código:
Lo que pretendo conseguir es, teniendo determinados posts y determinados tags en sus respectivas tablas, crear relaciones entre ellos mediante la tabla tags_relations.-- -- Estructura de tabla para la tabla `posts` -- CREATE TABLE `posts` ( `id` smallint(5) unsigned NOT NULL auto_increment, `title` text collate utf8_unicode_ci NOT NULL, `content` mediumtext collate utf8_unicode_ci NOT NULL, `date` int(10) unsigned NOT NULL default '0', `author` tinyint(3) unsigned NOT NULL default '0', `num_comments` smallint(5) unsigned NOT NULL default '0', `type` enum('published','draft','private','pending','note','deleted') collate utf8_unicode_ci NOT NULL default 'published', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `tags` -- CREATE TABLE `tags` ( `id` int(10) unsigned NOT NULL auto_increment, `tag` varchar(60) collate utf8_unicode_ci NOT NULL default '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `tags_relations` -- CREATE TABLE `tags_relations` ( `id` bigint(20) unsigned NOT NULL auto_increment, `id_tag` int(10) unsigned NOT NULL default '0', `id_post` smallint(5) unsigned NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Utilizo la siguiente consulta para conseguir la información ya relacionada:
Código:
El problema:SELECT * FROM posts INNER JOIN tags JOIN tags_relations ON tags_relations.id_post = posts.id AND tags_relations.id_tag = tags.id;
Esa consulta me devuelve los datos relacionados, pero duplicados. Es decir, me devuelve una fila por cada relación: Si un post tiene 3 tags, me devuelve 3 filas para él, con los mismos datos todas ellas menos las columnas de la tabla de tags, que cambian (lógicamente).
Lo que yo quiero es que me devuelva una fila sola, con más columnas o algo así (tipo tag1, tag2... tagN) por cada post.
Aclaro que no se si lo que pido es posible con mi diseño, y si creéis que esta relación debería crearse de otra forma (por ejemplo desde la aplicación y no directamente en la base de datos) decidlo y yo estaré encantado de aprender.
Saludos, y gracias por vuestro tiempo.