2010-12-15 73 views
1

J'ai une requête dans Access et je voudrais savoir s'il était possible d'utiliser la clause where not exists pour afficher un texte spécifique pour chaque champ lorsqu'il n'y a pas de lignes retournées.Requête d'accès sans résultats retournés

Exemple requête:

Select Field1, Field2, Field3 
From TableA 
Where Field1 = "test"; 

S'il n'y a pas de retour des résultats je voudrais ce qui suit pour revenir:

Field1 = "test" 
Field2 = "not provided" 
Field2 = "not provided" 

Répondre

0

La façon de le faire d'habitude ce que vous demandez est:

Select Field1, isnull(Field2, 'Not Provided'), isnull(Field3, 'Not Provided') 

modifier qui ops, vous utilisez Access, dans ce cas la fonction équivalente est "nz" (quoi ?! : P)

Select Field1, nz(Field2, 'Not Provided'), nz(Field3, 'Not Provided') 
+0

Il est même pas nulle, aucune ligne ne sont renvoyés, yesno? – Fionnuala

+0

En matière de curiosité, quelqu'un a-t-il essayé cela dans Access? Parce que pour moi, aucune ligne n'est retournée du tout. En d'autres termes, Nz n'aide pas quand il n'y a pas de lignes. – Fionnuala

+0

Cela ne retournera rien s'il n'y a rien dans la table. S'il y a des lignes dans les données qui ont des champs vides, elles renverront ces valeurs d'erreur. – rrrhys

6

Que diriez-vous:

SELECT Field1, Field2 
FROM Table 
WHERE ID=3 
UNION ALL SELECT DISTINCT "None","None" FROM AnyTableithAtLeastOneRow 
WHERE 3 NOT IN (SELECT ID FROM Table) 
+0

Cela ne retournera aucune ligne si Table est vide, n'est-ce pas? – phoog

+0

Vous pouvez utiliser n'importe quelle table, y compris les tables système, dont la garantie de ne pas être vide. – Fionnuala

+0

Aurais-je besoin de créer la table AnyTableithAtLeastOneRow avec les valeurs que je veux pour que cela fonctionne? – Rick