3

私は、web アプリケーションを作成するために、アクセス データベースを使用して asp.NET と C# を使用しています。

私の現在の問題は、SQL ステートメントにあります。プロジェクトでは、文字列値を使用してクエリを作成および保存しました。文字列に格納されているため、見た目が少し見にくいです。問題は、私が書いているこの最後のクエリにあります。2 つの内部結合があり、正確に何が間違っているのかわかりません。私が得るエラーは構文エラー(演算子がありません)であり、括弧内にすべてをリストします。クエリは次のとおりです。

SELECT Employee.[First Name], Employee.[Last Name], Employee.[Email],
       Departments.[Department]
FROM (
    Employee INNER JOIN EmpDept ON Employee.[EmpUserName] = EmpDept.[EmpUserName]
    INNER JOIN Departments ON Departments.[Department Number] = '2'
)
WHERE Departments.[Campus]='Clarion';

このように非常に醜いことはわかっています..これは構文エラーであるため、それほど難しくないことを願っています。

このクエリは、従業員の名前、電子メール、部門を返すように設計されています。2 は C# コードで指定され、コードの前半で決定されますが、特定の部門を表します。empDept テーブルは Departments テーブルと employee テーブルの間にあるため、従業員は複数の部門に所属できます。

どんな助けでも大歓迎です。ありがとう

4

5 に答える 5

1

FROM句に複数の結合が含まれる場合、Access には句内に括弧が必要です。最初の手順として、Access クエリ デザイナーで次のようなクエリを試します。

SELECT
    Employee.[First Name],
    Employee.[Last Name],
    Employee.[Email],
    Departments.[Department]
FROM 
    (Employee
    INNER JOIN EmpDept
    ON Employee.[EmpUserName] = EmpDept.[EmpUserName])
    INNER JOIN Departments
    ON Departments.[Department Number] = '2'
WHERE Departments.[Campus]='Clarion';

括弧を正しく配置したと思います。クエリ デザイナーで確認できます。しかし、私は2番目のON句に困惑しています。

ON Departments.[Department Number] = '2'

その句は、結合の「左側」のフィールドを参照しません。私はそれが何を達成することになっているのか理解できません.dbエンジンがあなたが望むことをするかどうかもわかりません.

于 2013-04-11T19:15:04.840 に答える
0

これを試して:

SELECT Employee.[First Name], Employee.[Last Name], Employee.[Email],
    Departments.[Department]
FROM Employee
    INNER JOIN EmpDept ON Employee.[EmpUserName] = EmpDept.[EmpUserName]
    INNER JOIN Departments ON EmpDept.[Department Number] = Departments.[Department Number]
        /* Or whatever your foreign key between Departments and EmpDept is */
WHERE Departments.[Department Number] = '2'
    AND Departments.[Campus] = 'Clarion'

サブクエリに心当たりがある場合は、エイリアスを作成して、それ自体で完全なクエリを形成するようにする必要があります。

SELECT e.[First Name], e.[Last Name], e.Email, e.Department
FROM
(
    SELECT Employee.[First Name], Employee.[Last Name], Employee.[Email],
        Departments.[Department], Departments.Campus
    FROM Employee
        INNER JOIN EmpDept ON Employee.[EmpUserName] = EmpDept.[EmpUserName]
        INNER JOIN Departments ON EmpDept.[Department Number] = Departments.[Department Number]
            AND Departments.[Department Number] = '2'
) AS e
WHERE e.Campus = 'Clarion'
于 2013-04-11T14:31:58.330 に答える