我有3张书,书籍,作者和流派
我希望得到输出结果为:book,author和genres,但是当我执行此查询时,我有重复的字段,如果书籍在示例第一行查询结果中有5个类型)作者行也重复5或反向。
关于SQL Fiddle的示例:
http://sqlfiddle.com/#!2/a15d8/1
我需要在第一行:
书|一位作者|五种类型 ... 等
答案 0 :(得分:1)
要获得所需内容,请将DISTINCT添加到第4行,您将不会有任何重复项。但是,您仍然可以返回多个作者(唯一),但这就是您的查询应该按原样返回的内容。
喜欢:
group_concat(DISTINCT concat_ws (' ',`a`.`last_name`,`a`.`first_name`,`a`.`middle_name`)) as author,
答案 1 :(得分:0)
您应该重新考虑您的架构。只是分享一些想法: (我知道这不能回答你的问题,但请相信我:从一开始就使用一个好的模式可以为你节省大量的工作)
在您的books表中,使用author.id
作为外键。否则,一旦获得重复的名称,您就会遇到麻烦(这是可能的)。加入这些表格也会变得更容易。
您很可能会拥有一系列流派,并将其分配到您的图书中。这是一个n:m关系。这意味着一本书可以有多种类型,一种类型可以分配给多本书。您将需要一个关系表来执行此操作。然后,关系表将包含书籍的ID和流派的ID并链接它们。