Pour une base de données d'accès qui ressemble à ceci: (Tous les champs de texte)accès Compliqué exclusion de requêtes SQL
Co1 Co2 Co3 Co4 A k t N1 B k t N2 A m t N3 B k z N4 A k z N5 C m t N6 C k z N7 C k t N8 A k t N9 C m t N10
Je dois créer une sorte de rapports qui effectuer les tâches suivantes:
Les résultats doit sélectionner des lignes:
- ordonné par Co1 premier
- alors commandé par Co2
- uniquement les données où Co3 = t ou r
- quand Co3 est pas t ni r, alors toutes les autres lignes avec une C04 avant où de Co1 et Co2 étaient les mêmes que la ligne actuelle sont également exclus
1,2 et 3 sont extrêmement faciles à faire (Ordre par et Where respectivement), mais peut # 4 être fait dans l'accès SQL? Si ce n'est pas possible, je vais faire une petite application C# qui boucle les données, mais je pense que ce doit être possible de faire en SQL et si cela peut certainement être beaucoup mieux.
La requête et la base de données réelles sont plus compliquées, mais # 4 est où je suis bloqué.
Avec l'exemple que je donne le résultat serait:
A m t N3 A k t N9 C m t N6 C m t N10 C k t N8
Je crois que ce couvre tous les cas possibles.
Précision, nous utilisons la quatrième colonne (C4 dans cet exemple) pour déterminer l'ordre mais il s'agit d'un champ de texte avec des caractères et des chiffres. Le champ est une lettre suivie de 2 chiffres: A01, A02, .. A99, B01, etc ... Précision # 2, je ne suis pas à blâmer pour cette conception de base de données. : P
Donc, pour le gourou SQL parmi nous, cela peut-il être fait dans l'accès SQL? Comment?
Merci beaucoup pour toute aide que vous pouvez fournir.
Je ne comprends pas votre contrainte # 4. Pourriez-vous le reformuler? "alors toutes les autres lignes avec un C04 antérieur" qu'est-ce que cela signifie? –
@Unknown Google: Andomar était très correct quand il a amélioré le libellé de mon # 4 en l'inversant: nous devons exclure les lignes pour lesquelles il y a une ligne ultérieure où Co3 n'est pas t mais où la dernière rangée a le même Co1 et Co2 –