ホームページ >データベース >mysql チュートリアル >MS Access でテーブルのない UNION クエリを実行するにはどうすればよいですか?

MS Access でテーブルのない UNION クエリを実行するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-12 09:25:43867ブラウズ

How to Perform a Table-less UNION Query in MS Access?

MS Access (Jet/ACE) のテーブルレス UNION クエリ

Jet/ACE データベース エンジンを使用する Microsoft Access で、テーブル データ ソースを指定せずに UNION クエリを使用しようとすると、エラーが発生する場合があります。 「クエリ入力には少なくとも 1 つのテーブルまたはクエリが含まれている必要があります」というエラー メッセージが表示されます。

この制限は、データ ソースのフィールドが使用されていない場合でも、エンジンが FROM 句に少なくとも 1 つのテーブルまたはクエリを必要とすることに起因します。この問題を解決するには、常に単一行を含む仮想テーブルを使用します。

仮想テーブルの作成

<code>Public Sub CreateDualTable()
    Dim strSql As String
    strSql = "CREATE TABLE Dual (id COUNTER CONSTRAINT pkey PRIMARY KEY);"
    Debug.Print strSql
    CurrentProject.Connection.Execute strSql
    strSql = "INSERT INTO Dual (id) VALUES (1);"
    Debug.Print strSql
    CurrentProject.Connection.Execute strSql

    strSql = "ALTER TABLE Dual" & vbNewLine & _
        vbTab & "ADD CONSTRAINT there_can_be_only_one" & vbNewLine & _
        vbTab & "CHECK (" & vbNewLine & _
        vbTab & vbTab & "(SELECT Count(*) FROM Dual) = 1" & vbNewLine & _
        vbTab & vbTab & ");"
    Debug.Print strSql
    CurrentProject.Connection.Execute strSql
End Sub</code>

仮想テーブルを使用する

仮想テーブルを使用して、テーブルレス UNION クエリを作成できるようになりました:

<code>SELECT "foo" AS my_text
FROM Dual
UNION ALL
SELECT "bar"
FROM Dual;</code>

代替方法

あるいは、TOP 1 または WHERE 句を含む SELECT ステートメントを使用して、結果セットを 1 行に制限することもできます。

チェック制約は、ADO (CurrentProject.Connection.Execute) 経由で実行されるステートメントでのみ使用できることに注意してください。 DAO (CurrentDb.Execute) は、チェック制約の作成をサポートしていません。

以上がMS Access でテーブルのない UNION クエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。