2

Access にこの SQL がありますが、エラーが発生します。括弧を移動しようとしましたが、問題は解決しませんでした。

SELECT
    a.title, a.id, a.name, l.user, l.time 
FROM
    Reports a
INNER JOIN (
    AuditLog AS l ON a.id = l.id
INNER JOIN (
(
    SELECT min(time) Mintime, id
    from AuditLog
    GROUP BY id
) AS t )
  ON l.id = t.id
  AND l.time = t.mintime )
WHERE
    a.NAME LIKE 'something*'
    AND a.ACTIVE='Y'

表示される構文エラーを解決するにはどうすればよいですか?

4

2 に答える 2

3

クエリのこの部分は、間違いなく問題を引き起こすはずです。

SELECT min(time) Mintime, id

min(time)フィールド式を としてエイリアスする場合は、キーワードを使用するMintime必要があります。ASテーブル エイリアスは必要ありませんがAS、フィールド エイリアスの場合は必要です。

SELECT min(time) AS Mintime, id

あなたのテーブルtimeのフィールドのようです。その場合、関数AuditLogと区別するためにその名前を角括弧で囲みます。Time()

SELECT min([time]) AS Mintime, id

かっこについては、可能であれば、Access のクエリ デザイナーを使用して結合を設定する必要があります。dbエンジンが要求する括弧がクエリに含まれていることを保証し、それらを正しく配置します。

それができない場合は、この未テストのバージョンを試してみてください。

SELECT
    a.title, a.id, a.name, l.user, l.time 
FROM
    (Reports a
    INNER JOIN AuditLog AS l
    ON a.id = l.id)
    INNER JOIN
        (
            SELECT min([time]) AS Mintime, id
            from AuditLog
            GROUP BY id
        ) AS t
    ON
            l.id = t.id
        AND l.time = t.mintime
WHERE
        a.NAME LIKE 'something*'
    AND a.ACTIVE='Y'
于 2012-12-05T23:02:59.087 に答える
2

条件がない限り、括弧は必要ありませんor。Access でこれを試して、動作するかどうかを確認します。

SELECT
    a.title, a.id, a.name, l.user, l.time 
FROM
    (Reports a INNER JOIN AuditLog AS l ON a.id = l.id) INNER JOIN
    (
        SELECT min(time) as Mintime, id
        from AuditLog
        GROUP BY id
    ) AS t ON l.id = t.id AND l.time = t.mintime
WHERE
    a.NAME LIKE 'something*'
    AND a.ACTIVE='Y'

ただし、Access でサブクエリを実行したことはないので、サブクエリの開きかっこの横にエラーが報告されるかどうかを確認するのは興味深いことです。

于 2012-12-05T22:49:51.923 に答える