【问题标题】:Single query MySQL collate hasAndBelongsToMany data单查询 MySQL 整理 hasAndBelongsToMany 数据
【发布时间】:2011-08-23 15:05:40
【问题描述】:

我有一组表

  • 文档
  • 关键字

它们的关系如下

  • 文档拥有并属于多个组
  • 文档有并且属于许多关键字

我想创建一个选择所有文档的查询,为每个组创建不同的记录(因为我需要按组进行选择),这还将 GROUP_CONCAT 将所有关键字放到一个字段中。

这背后的原因是我使用 sphinx 来索引文档表,我需要它索引标题、内容和关键字。我还必须能够按组过滤。

这是我目前所拥有的:

SELECT
    Link.document_id AS id,
    Link.group_id AS db_id,
    Document.title,
    Document.description,
    Group.name AS db_name,
    GROUP_CONCAT(distinct Keyword.`content` SEPARATOR ", ") as `keywords`
FROM `groups_documents` AS Link
    LEFT JOIN `documents` AS `Document` ON (Document.id = Link.document_id)
    LEFT JOIN `groups` AS `Group` ON (`Group`.id = Link.group_id)
    LEFT JOIN `keywords_documents` AS `KLink` ON (`KLink`.`document_id` = `Link`.`document_id`)
    LEFT JOIN `keywords` AS `Keyword` ON (`Keyword`.`id` = `KLink`.`keyword_id`)

但不幸的是它不起作用,我只得到一行。

【问题讨论】:

    标签: mysql join sphinx keyword has-and-belongs-to-many


    【解决方案1】:

    如果在不包含 GROUP BY 子句的语句中使用分组函数,则相当于对所有行进行分组。

    您需要添加一些内容作为 Group by Group.id

    【讨论】:

    • 谢谢。我刚刚解决了它并来到这里发布它然后我看到了这个。然后我必须连接 group.id 很痛苦,但这就是生活。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多