0

次のクエリを書きました。正しいと思いますが、「演算子がありません」というエラーがあります。

SELECT * FROM results,Types WHERE results.a=Types.b  
INTERSECT  SELECT * FROM results,Types WHERE results.c=Types.b

誰か助けてくれませんか?

どうもありがとう。

4

4 に答える 4

3

どのデータベースを使用していますか? intersectサポートされていると確信していますか?Oracleでクエリを試しました(テーブル名をDBに対応するものに変更しました)が、うまくいきました。

編集: MS-Access を使用していることを確認したので、MS-Access ではサポートされていないため、INTERSECT が問題であることは明らかです: http://www.access-programmers.co.uk/forums/archive/index.php /t-86531.html

EDIT2: これはテストされていませんが、基本的な考え方は、2 番目のクエリに存在する最初のクエリのすべての行を検索する必要があるということです。これを行うには、2 つのクエリ間のすべての列を比較して一致を確認する必要があります。これは、すべての列が「交差」行になるために一致する必要があるためです。

構文の問題がいくつかあるかもしれませんが、うまくいけば、これで開始できます。

SELECT r.col1
     , t.col1
     /* list all other columns here */
  FROM results r
     , types t
 WHERE r.a = t.b
 AND EXISTS (
     SELECT *
       FROM results r2
          , types   t2
      WHERE r2.c = t2.b
        AND NZ(r.col1,0) = NZ(r2.col1,0)
        AND NZ(t.col1,0) = NZ(t2.col1,0)
        /* list other columns here, they all need to match so intersection will work */
 )
于 2010-06-02T18:45:32.523 に答える
2

非 ANSI 結合が問題を混乱させる可能性があります

SELECT * FROM results R JOIN Types T ON R.a = T.b  
INTERSECT
SELECT * FROM results R JOIN Types T ON R.c = T.b 
于 2010-06-02T18:52:05.600 に答える
2

SELECT各ステートメントを個別にテストすることをお勧めします。それらが単独で機能することを確認してください。次に、 を実行しINTERSECTます。

たとえば、SQL Server を使用している場合、これは 2 つのテーブルを参照する正しい方法ではありません。JOIN句を追加する必要があります(ON列を に指定するJOIN)。

SQL Server でなくても、クエリがそれぞれ単独で機能することを確認する必要があります。

編集: 他の誰かがここで、 MS Access で SQL INTERSECT および MINUS 操作を実装するにはどうすればよいかについて尋ねました。そこには意見の相違が見られるので、結果をテストして、必要なものが得られていることを確認してください.

于 2010-06-02T18:52:32.853 に答える
0

個々のクエリによって生成される共通の行を見つけたい場合にのみ、INTERSECT ステートメントを使用します。あなたは声明です:

" SELECT * FROM 結果,Types WHERE results.a=Types.b
INTERSECT SELECT * FROM 結果,Types WHERE results.c=Types.b "

ジョイントが機能するために必要な条件と一致しません。「WHERE」句が問題を引き起こしています。

results.a<>results.c の場合: u より... INTERSECT するものは何もありません。

于 2014-07-25T11:49:42.170 に答える