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

Langage SQL Discussion :

Formulaire avec liste basée sur une autre table


Sujet :

Langage SQL

  1. #1
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut Formulaire avec liste basée sur une autre table
    Bonjour,

    Je me tourne encore une fois vers vous, n'arrivant pas à trouver la solution à mon problème.

    Voici le cas simplifié :

    J'ai une table STOCK qui liste l'état de colis
    Index - Colis - Ville - id_Transfert

    et une table TRANSFERT qui liste des trajets possibles
    Index - Ville_départ - Ville_arrivée

    Un formulaire présente le contenu de la table STOCK (sa source est la table STOCK).

    Le controle pour n_Transfert est une liste déroulante et je veux que les valeurs possibles se limitent aux elements de la table TRANSFERT pour lesquels la ville de départ est la ville de stock.

    J'ecris donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Index FROM Transfert WHERE Ville_départ = Stock.Ville;
    Malheureusement, il propose pour tous les enregistrement, la liste correspondant à la ville du premier enregistrement.

    Je suppose que je fais une grossiere erreur sur la facon d'utiliser la valeur d'un champ de l'enregistrement courant.

    Pourriez-vous m'aider ?
    Merci


    PS : Je précise juste que si j'indique une valeur numérique à la place de Stock.ville dans ma clause WHERE, j'obtiens bien la liste correspondant à cette valeur numérique.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Etonnant que tu n'aies pas de message d'erreur avec cette requête (si toutefois tu n'as pas commis d'erreur en écrivant ton message ?) : tu utilises un attribut de la table STOCK dans la clause WHERE alors qu'elle ne figure pas dans la liste des tables utilisées dans la clause FROM.

    Est-ce que cette requête corrige ce problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Index
    FROM TRANSFERT
    INNER JOIN STOCK ON (Ville_depart = Ville)
    Remarques :
    1°/ la syntaxe de la clause INNER JOIN peut être légèrement différente selon ton SGBD
    2°/ je te CONSEILLE FORTEMENT d'enlever tous les accents et autre caractères non diacritiques de la structure de ta base (accents, cédilles, etc.)
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    sabotage>> Si tu travailes avec FORM de ORACLE, et que Stock.Ville représente le contenu d'un bloc de données nommé Stock, il faut sans doute écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE Ville_départ = :Stock.Ville
    .

    Magnus >> Ce sont les signes diacritiques qu'il faut bannir
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Autant pour moi, j'ai beau me relire, des fois je suis un vrai
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonne journée à tous,

    Il est effectivement plus raisonnable que les tables des colonnes utilisées soient indiqués dans le FROM

    Par contre, la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Index 
    FROM TRANSFERT 
    INNER JOIN STOCK ON (Ville_depart = Ville)
    affiche tous les enregistrements communs à la table STOCK et à la table TRANSFERT.

    Je souhaiterais avoir uniquement les enregistrements de TRANSFERT pour lesquels Transfert.Ville_depart = (Stock.Ville_de_l'enregistrement_sur_lequel_je_suis_dans_le_formulaire)

    ---

    Je ferrais plus attention avec les caractères non diacritiques
    J'ai deja lu les conseils sur le site pour le choix des noms ; auriez-vous d'autres documents à me conseiller sur la facon de nommer les colonnes etc. (ex : nommer id_xxxx une colonne qui fait reference à un index xxxx)


    Merci
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Je souhaiterais avoir uniquement les enregistrements de TRANSFERT pour lesquels Transfert.Ville_depart = (Stock.Ville_de_l'enregistrement_sur_lequel_je_suis_dans_le_formulaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ...
    WHERE STOCK.Ville = :VilleDuForm
    où :VilleDuForm permet de paramétrer ta requête ; c'est-à-dire qu'à l'exécution de cette requête il va falloir que tu saisisses une valeur pour VilleDuForm
    Tu peux aussi créer ta requête dynamiquement en concaténant à ta requête la valeur à utiliser dans la clause WHERE (ie VilleDuForm)

    auriez-vous d'autres documents à me conseiller sur la facon de nommer les colonnes etc. (ex : nommer id_xxxx une colonne qui fait reference à un index xxxx)
    Ce document devrait t'en dire plus
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'etais parti sur un programme de SQL, ca dérive plus sur un probleme Access en fait.
    Maintenant que mon écriture SQL est "propre" je vais juste avoir à travailler sur la bonne facon de l'écrire dans Access.

    Merci pous vos réponses et pour les conseils.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. requete suppression avec critere base sur une autre requete
    Par strouve dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 16/07/2012, 10h18
  2. Réponses: 14
    Dernier message: 31/08/2010, 11h25
  3. Update avec un controle sur une autre table
    Par Calvein dans le forum Requêtes
    Réponses: 0
    Dernier message: 19/06/2009, 18h50
  4. contraint CHECK avec lecture de données sur une autre table ?
    Par mamiberkof dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/05/2006, 09h14
  5. pb d'insertion avec un SELECT sur une autre table
    Par epeichette dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 22h58

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