2

MySQL コードの一部を Access に変換するのに非常に苦労しています。私が取り組んでいる Access プロジェクトの Sakila (MySQL) データベースにあるクエリの 1 つを使用しようとしています。

まず、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
4

1 に答える 1

4

MySQL 関数に代わる最も一般的に引用されている Access の代替は、ここから入手できるGROUP_CONCAT()Allen Browne の関数です。ConcatRelated()

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
于 2013-10-20T15:35:16.787 に答える