ホームページ >データベース >mysql チュートリアル >MS Access でテーブルのない UNION クエリを実行するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。