IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Probleme de relations pour requetes / Like [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Probleme de relations pour requetes / Like
    Bonjour,

    Je suis confrontée depuis quelques jours à un problème que je ne sais résoudre. J’aurais donc besoin de votre aide si vous avez quelques minutes à me consacrer.
    Pour résumer, le problème est le suivant :
    J’ai deux tables que je dois confronter. L’une contient les informations à propos des parcelles, l’autres celles des variétés. Je connais donc d’un côté le type de sol des parcelles (classé de A a E) et de l’autre côté je sais, pour chaque variété, le ou les types de sol sur lesquels je peux la planter. Voici donc les tableaux que j’ai :
    Parcelle - Type de sol
    11- A
    34 - B
    46 - C
    98 - D
    113 - E



    Variété - Type de sol recommandé
    CTC3 - A et B
    CTC5 - A,B et C
    CTC8 - A, B, C et D
    CTC11 - B
    SP4 - B et C
    SP89 - B, C et D
    SP90 - B, C, D et E
    RB45 - C et D
    RB56 - C, D et E


    Je souhaiterais donc réaliser une requête qui me permet, pour chaque parcelle, de savoir quelles sont les variétés que je peux planter. Dans le cas de cet exemple, le résultat attendu est donc :
    Parcelle -Type de sol -Variété - Type de sol recommandé
    11- A- CTC3 - A et B
    11- A- CTC5 - A,B et C
    11- A- CTC8 - A, B, C et D
    34 - B- CTC3 - A et B
    34- B- CTC5 - A,B et C
    34- B- CTC8 - A, B, C et D
    34- B- CTC11- B
    34- B- SP4 - B et C
    34- B- SP89 - B, C et D
    34- B- SP90 - B, C, D et E
    46- C- CTC5 - A,B et C
    46- C- CTC8 - A, B, C et D
    46- C- SP4 - B et C
    46- C- SP89 - B, C et D
    46- C- SP90 - B, C, D et E
    46- C- RB45 - C et D
    46- C- RB56 - C, D et E
    Etc.

    Le premier problème que j’ai rencontré est pour choisir quel type de relation entre la table PARCELLE et la table VARIETES. Comme les données de VARIETE (ex : « A, B et C ») ne sont pas les mêmes que PARCELLE (« A »), lorsque je crée une requête, Access ne présente que les champs qui sont égaux aux deux tables. Dans le cas de l’exemple, il ne montre que la parcelle 34 avec la variété CTC 11.
    J’ai essayé de séparer les informations de VARIETE en 5 colonnes :

    Variété -Type de sol recommandé- A- B- C- D- E
    CTC3 -A e B - - A- B- - - -
    CTC5 -A,B e C - - A- B- - -
    CTC8 -A, B, C e D- - A- B- - D- -
    CTC11 -B - - - B- - - -
    SP4 -B eC - - - B- - - -
    SP89 -B, C e D - - - B- - D-
    SP90 -B, C, D e E- - - B- C- D- E
    RB45 -C e D - - - - C- D- -
    RB56 -C, D e E - - - - C- D- E

    Mais il faudrait faire une relation entre PARCELLE et chaque colonne, ce qui est impossible car il faudrait faire 5 relations entre les mêmes tables.
    J’ai donc voulu faire 5 tables, une contenant toutes les variétés qui peuvent être plantées en sol A, une avec toutes les variétés qui peuvent être plantées en sol B, etc. Ici, le problème serait pour la suite de la création de la base de donnés. Les contrôles de mes formulaires devront alors actionner 5 requêtes. Je multiplie donc le poids de la base de donné et les erreurs possibles par 5.

    La seule solution plausible serait de créer une requête (relation entre Type de sol de PARCELLE et Type de sol recommandé de VARIETE) avec un critère de sélection de type Like%%. Cependant, il persiste le problème premier : lorsque j’ouvre la requête, avant même d’insérer le contrôle Like, Access ne sélectionne que les champs identiques (parcelle 34 et CTC11). De plus, je ne parviens pas à écrire la formule pour qu’elle sélectionne les variétés qui contiennent la même lettre que Type de sol :
    Ex : Je parviens à utiliser Like si je sais par avance quelle lettre doit contenir le mot : Like "*A*"
    Pour sélectionner les champs qui contiennent la lettre du champ Type de sol (non connu par avance), j’ai essayé, sans succès : Like "* «Expr» [Parcelle]![Type de sol] «Expr» *"


    Une « petite » complication est de savoir qu’en réalité il n’y a pas un seul facteur a confronté entre ces deux tables (type de sol) mais cinq. Les solutions que j’avais trouvées ne permettent pas la comparaison d’autres colonnes.

    Pourriez-vous m’aider à résoudre ce problème. Je suis bloquée depuis quelques jours déjà et à cours d’idées.
    Je vous remercie par avance pour l’aide que vous pourrez m’apporter.

    Cordialement,
    Claire

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 099
    Points : 5 217
    Points
    5 217
    Par défaut
    Bonjour,
    D'une manière générale il faut éviter de mettre plusieurs colonnes avec des informations similaires dans une table, mais plutot multiplier les lignes, sinon les contraintes ne peuvent pas être écrites.

    Dans ton cas il faudrait éclater la table des compatibilités :
    CTC3 - A
    CTC3 - B
    CTC5 - A
    CTC5 - B
    CTC5 - C
    ...

    Ainsi pour connaitre les possibilités il suffit d'une simple jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select parcelle, variete 
    from Tparcelle inner join Treco on Tparcelle.type=Treco.type
    On peut facilement améliorer la qualité d'information avec un champ qui précise un taux de compatibilité (excellent / bon / moyen...), un rendement attendu...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Remerciements
    Merci beaucoup.

    Tellement simple que l'idée ne m'était même pas passé par la tête...
    et.... ça marche!!!!

    Merci encore.
    Claire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de jointure pour une requete
    Par Vincinho dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/02/2010, 14h20
  2. Probleme ADO adapter une requete sql pour l'utiliser dans mon code vb6
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/04/2009, 15h53
  3. probleme de curseur pour creer une requete
    Par firejocker dans le forum Requêtes
    Réponses: 3
    Dernier message: 27/12/2007, 17h18
  4. probleme d'accent pour requete access
    Par jibus02 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/12/2007, 10h49
  5. Réponses: 2
    Dernier message: 13/05/2006, 13h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo