|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre habitué
![]() Inscription : octobre 2005 Messages : 528 ![]() |
Bonjour à tous
J'ai quelque difficulté à écrire une requête donc j'apprécierai votre aide. Tout d'abord voici les colonnes de la tables qui nous intéresse : marquage : texte ville : texte nom : texte reference: texte et voici un exemple de lignes possibles : Code :
Donc si je reprend mon exemple ci dessus, j'aimerai obtenir un résultat de cette forme : Code :
- Pour la ligne L01, : 2 lignes dont le marquage commence par T correspondent (T01 et T03 ont un marquage A1 ce qui correspond à A1 /A2 ) - Pour la ligne L02, : 2 lignes dont le marquage commence par T correspondent (T01 et T03 ont un marquage A1 ce qui correspond à A1) - Pour la ligne L03 : aucune ligne dont le marquage commence par un T ne correspond (A6 <> A1 et A6 <> B1) Pour le moment, je suis passé par un script vba mais je pense qu'une solution SQL serait plus adapté et plus performante Merci d'avance
__________________
Le savoir est une arme alors soyons armés |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Nom,
Ta question est beaucoup plus complexe qu'il n'y paraît... et non moins intéressante. En fait, il faut passer par plusieurs requêtes (eh oui, tout ne se résoud pas, forcément, en une seule requête). Voici ma suggestion (via l'assistant) : Requête R1 : - ajouter TaTable (FROM) ; - ajouter tous les champs (SELECT) ; - Critères : marquage Comme "L*". ==> liste, uniquement, les enregistrements de TaTable dont le marquage commence par "L". Requête R2 : - ajouter TaTable (FROM) ; - ajouter tous les champs (SELECT) ; - Critères : marquage Comme "T*". ==> liste, uniquement, les enregistrements de TaTable dont le marquage commence par "T". Requête R3 : - ajouter R1 et R2 (FROM) ; - lier R1 et R2, via "reference" ; - ajouter les champs que tu souhaites (SELECT). ==> lie, sur elle-même, TaTable par les mêmes références. Ensuite, il faudra passer par une requête "analyse croisée" pour que les "T*" soient sur une même ligne : je te propose de voir cela après. En attendant, si tu veux, étudies le résultat de cette opération.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#3 | ||||||
|
Membre habitué
![]() Inscription : octobre 2005 Messages : 528 ![]() |
Bonjour et merci pour ta réponse.
En effet, ce que tu me proposes fonctionne pour les lignes dont la référence correspond exactement à une autre référence. (ligne L02) Par contre pour la ligne L01, je n'ai pas de résultat. Avec ta solution j'ai le résultat suivant Code :
Code :
Ou alors splitter directement la valeurs de la colonne ? EDIT : J'ai essayé avec la fonction MID et ça semble être bon Si je simplifie ma requête, elle ressemble à ça : Code sql :
Cela fonctionne mais la longueur de chaine (ici 2) peit ammener des erreurs/incohérences
__________________
Le savoir est une arme alors soyons armés |
||||||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Ah oui, c'est exact.
Le "split" existe, mais en VBA (je ne connais pas VBA). Pour les références mixtes de type "A1 / A2", quel est le maximum d'éléments (séparés par " / ", donc) ?
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : octobre 2005 Messages : 528 ![]() |
Il n'y a pas vraiment de nombre maximum définis.
Mais tant pis sinon j'ai une requête + un script VBA, ça devrait suffire ^^
__________________
Le savoir est une arme alors soyons armés |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com