2016-12-06 10 views
-4

私は学校でITをやっています。私たちは、Accessのデータベースに基づいたプログラムを扱います。両親はフロントネーム、息子または娘の名前とクラス を記入し、その後子供についての追加情報を記入します。これは正しくなければならず、特にクラスです。質問でレコードを確認する

私はコントロール(クエリのチェッククラス)を置くのです。私は子供のすべての情報(テーブル '学生')を見つけることができる1つのテーブル もう1つのテーブル( '情報')は、両親が記入したものです。今度は親が間違えたすべての学生を見てみましょう:

これは、それが動作しません、私のクエリです:

In (SELECT [class] FROM [information] WHERE (([information].[frontname] = [student].[frontname]) AND ([information].[class] <> [student].[class]))) 

誰かが私を助けることができますか?

答えて

0

いくつかの理由で、あなたのSQLは無効です。

  1. IN()を取り除く必要があります。これは比較で使用される式で、配置が正しくなく、結果のデータセットを変更することはありません。
  2. テーブル情報とテーブルStudentを呼び出すのではなく、WHEREステートメントの2つを比較しています。
  3. SELECT [class]は明示的ではありません。 [class]が両方のテーブルに存在するため、表示するテーブルの値を選択する必要があります。それが学生テーブルの場合は、SELECT [student].[class]である必要があります。両者の値がどのように異なるかを見ることができます。
  4. 使用が参加し、彼らは

を読んで理解しやすくなりますので、私は完全にあなたの問題を理解していないので、何をしたいあなたを与えないことがあり、編集は、以下の通りです:

SELECT [student].[class], [information].[class] 
FROM [Information] 
INNER JOIN [Student] 
ON [information].[frontname] = [student].[frontname] 
WHERE [information].[class] <> [student].[class]; 

しかし、フロントネームだけを比較しているので、奇妙なデータを取得することになります。したがって、この学校に2つのDe Vliegerがある場合、クエリでは返されるデータはわかりません。

SELECT [student].[class], [information].[class] 
FROM [Information] 
INNER JOIN [Student] 
ON [information].[frontname] = [student].[frontname] 
AND [Information].[surname] = [student].[surname] 
WHERE [information].[class] <> [student].[class]; 
+1

あなたがいない二 'ON、コピー&ペーストでミスを犯しました:「姓」フィールドには、両方のテーブルに存在する「backname」または「姓」を想定しまたはそう

さらに編集、 'に参加しました。 :) – GavinP

関連する問題