mysql - 将 MySQL 代码转换为 Access : GROUP_CONCAT and a triple JOIN

标签 mysql ms-access group-concat

我在将一段 MySQL 代码转换为 Access 时遇到了很大的困难。 我正在尝试将 Sakila (MySQL) 数据库中找到的查询之一用于我正在处理的 Access 项目。

首先,GROUP_CONCAT函数根本不起作用。经过一番 Google 搜索后,我发现 Access 不支持此功能,但我找不到可行的替代方案。然而 CONCAT 可以被一些“+”运算符取代。

然后是三重 LEFT JOIN,它不断返回缺少运算符的错误。我发现一篇博客文章解释了一系列括号如何提供帮助,但这导致了更多麻烦,并促使我删除了括号,之后它引发了更多丢失的运算符错误。

此外,SEPARATOR 似乎也不被接受,但这可能是由于 GROUP_CONCAT 不起作用。

有人愿意引导我走向正确的方向吗?我已经为此苦苦挣扎太久了。

SELECT
a.actor_id,
a.first_name,
a.last_name,
GROUP_CONCAT(DISTINCT CONCAT(c.name, ': ',
    (SELECT GROUP_CONCAT(f.title ORDER BY f.title SEPARATOR ', ')
                FROM film f
                INNER JOIN film_category fc
                  ON f.film_id = fc.film_id
                INNER JOIN film_actor fa
                  ON f.film_id = fa.film_id
                WHERE fc.category_id = c.category_id
                AND fa.actor_id = a.actor_id
             )
         )
         ORDER BY c.name SEPARATOR '; ')
AS film_info
FROM
actor AS a
LEFT JOIN film_actor AS fa ON a.actor_id = fa.actor_id
LEFT JOIN film_category AS fc ON fa.film_id = fc.film_id
LEFT JOIN category AS c ON fc.category_id = c.category_id
GROUP BY a.actor_id, a.first_name, a.last_name

最佳答案

最常被引用的 MySQL GROUP_CONCAT() 函数的 Access 替代方法是 Allen Browne 的 ConcatRelated() 函数,可用 here .

对于 JOIN 周围的括号,是的,Access SQL 对它们很挑剔。而不是

FROM
actor AS a
LEFT JOIN film_actor AS fa ON a.actor_id = fa.actor_id
LEFT JOIN film_category AS fc ON fa.film_id = fc.film_id
LEFT JOIN category AS c ON fc.category_id = c.category_id

尝试

FROM 
    (
        (
            actor AS a 
            LEFT JOIN 
            film_actor AS fa 
                ON a.actor_id = fa.actor_id
        ) 
        LEFT JOIN 
        film_category AS fc 
            ON fa.film_id = fc.film_id
    ) 
    LEFT JOIN 
    category AS c 
        ON fc.category_id = c.category_id

关于mysql - 将 MySQL 代码转换为 Access : GROUP_CONCAT and a triple JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19478272/

相关文章:

php - SQL 帮助 ~ GROUP_CONCAT

php - mysql group_concat 到 ZF 中的 JSON - 结果重复转义反斜杠

mysql - 如何在一个mysql docker容器中启动多个实例

sql - 帮助建立数据库

php - MySQL & PHP - 只列出之前没有列出的项目

java - 如何在 Windows 2008 上将 64 位 Java ODBC 驱动程序与 Access 数据库一起使用?

Mysql返回多行

mysql - nbsp 字符可能不会作为 nbsp 传递到 MySQL 后端

mysql - 求 [SQL 事务示例]

sql - XNA Windows 游戏简单数据库 Access - .mdb 不起作用 [非常基本]