Maison >base de données >tutoriel mysql >Comment effectuer une requête UNION sans table dans MS Access ?

Comment effectuer une requête UNION sans table dans MS Access ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-12 09:25:43867parcourir

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

Requête UNION sans table dans MS Access (Jet/ACE)

Dans Microsoft Access utilisant le moteur de base de données Jet/ACE, vous pouvez rencontrer des erreurs lorsque vous essayez d'utiliser une requête UNION sans spécifier de source de données de table. Le message d'erreur « L'entrée de requête doit contenir au moins une table ou une requête » apparaîtra.

Cette limitation provient de l'exigence du moteur d'au moins une table ou requête dans la clause FROM, même si aucun champ de cette source de données n'est utilisé. Pour résoudre ce problème, vous pouvez utiliser une table virtuelle contenant toujours une seule ligne.

Créer une table virtuelle

<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>

Utiliser des tables virtuelles

À l'aide de tables virtuelles, vous pouvez désormais créer des requêtes UNION sans table :

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

Méthodes alternatives

Vous pouvez également utiliser une instruction SELECT avec une clause TOP 1 ou WHERE pour limiter l'ensemble de résultats à une seule ligne.

Veuillez noter que les contraintes de vérification ne sont disponibles que dans les instructions exécutées via ADO (CurrentProject.Connection.Execute). DAO (CurrentDb.Execute) ne prend pas en charge la création de contraintes de vérification.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn