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 :

insert données provenant d'une autre table


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 9
    Points
    9
    Par défaut insert données provenant d'une autre table
    Bonjour,
    Je vais essayer de faire simple:

    J'ai deux tables:
    PC ( nom du pc, numérie de série , etc)
    Localisation ( prefixe_machine, localisation)

    Chaque nom de PC permet de déterminer la localisation grace à son prefixe machine.

    J'ai une table PC avec 10.000 machines. Est il possible de créer un champs Localisation dans la table PC qui viendrait ajouter la localisation en fonction du nom de la machine?
    (Pour info, dans ma table localisation j'ai des correspondance exemple: Tous les pc dont le nom DNS commence par PAR sont des PC situés à Paris. De meme, si le nom du PC commence par Mar, je veux pouvoir indiquer marseille.

    En gros si le prefixe de la machine est A, je dois inscrire le champs localisation correspondant à A dans ma table PC, information provenant de la table localisation.

    Je sais pas si je suis assez clair.

    En tout cas , merci d'avance a ceux qui me liront.

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Pas trop clair, non !

    Ajoute une clé étrangère...


  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    voilà une idée...

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TablePCs SET Localisation=Switch(Left(Nom,3)="PAR","Paris",Left(Nom,3)="MAR","Marseille",Left(Nom,1)="A","A")

    faut créer le champ Localisation manuellement en édition de table avant.

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    4rn0, je te remercie pour ta solution mais j ai 40 Lignes donc un switch ou un 40 IF c est plutot moyen.

    Pour Chtulus,
    Pour faire simple, dans ma table PC j ai un nom DNS. En fonction de ce nom je connais la localisation du PC via ma table Localisation.

    Je voudrais juste créer une colonne de plus dans PC qui se remplie automatiquement en allant consulter la table Localisation pour connaitre la correspondance lieu-nom DNS.

    Si quelqu'un à une solution, je suis preneur.

    Merci d'avance !

  5. #5
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut à tous,

    je ne vois pas l'utilité de stocker localisation dans [PC], c'est moins pratique en plus s'il y a modification des préfixes.
    utilise cette requete tel quel sinon transforme la en "requete mis à maj":
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT PC.[nom du pc], PC.[numérie de série], Localisation.localisation
    FROM PC INNER JOIN Localisation ON left(PC.[nom du pc],3) = Localisation.prefixe_machine;

    ce qui est "normal" de faire c'est de créer un champ dans [PC] <préfixe machine> avec une liste de choix ayant:
    contenu:[localisation]
    Colonne liée:1
    nbre de colonnes:2
    Largeurs de colonnes:0cm;4cm


  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    bonjour vodiem,
    merci pour ta réponse,


    plusieurs questions en espérant que tu puisses m'aider :

    D'abord : pourquoi vouloir stocker localisation dans PC, car je dois par la suite comparer avec une troisieme table qui integre directement le champ localisation et je dois comparer ces deux tables : Nom dns/numérie de série/localisation.

    A moins que tu n'ai une meilleure idée je ne vois pas comment faire.

    Autre question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ON LEFT(PC.[nom du pc],3)
    A quoi correspond le 3 ?
    Quand j'adapte la requete que tu ma ecrite, j'ai un message d'erreur : Erreur de syntaxe dans l opération JOIN. ( cela vient peut etre du 3??)

    Désolé pour mes questions de débutant, mais Access je connais pas du tout et SQL j'ai pas pratiqué depuis longtemps :-(

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    structurellement il est préférable de passer par des identifiants. le CP (code postale) est un meilleur choix que le nom de la ville: plus court (donc rapide pour le traitement) et plus sur: si le nom de la ville venait à changer, le CP reste le même.
    enfin on va pas remettre en cause la conception.

    la requete fait la jointure entre les trois première lettre du <nom pc>, mais c'est peut être <nom dns> (je n'étais pas sur du champ qui contient "PAR","MAR"...) avec le champ <prefixe_machine>.
    left(...,3) tronque les 3 premières lettres et la jointure lui associe la valeur du champ.
    tu s'auras te débrouillé? sinon donne le nom de l'ensemble de tes champs.

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Merci Vodiem!
    J'ai réussi a me débrouiller, en faite j'avais besoin de faire la jointure sur les 5 premieres lettres et non les 3 ( mon exemple PAR paris MAR marseille etait en faite simplifié c'est pourquoi la requete que tu m'a donnée échouait.)

    En tout cas , un grand merci à toi , et à ceux qui m'ont aidé!

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

Discussions similaires

  1. Comment récupérer des données, les comparer à une autre table.
    Par soria_t dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/08/2008, 17h58
  2. requete insert a partir d'une autre table
    Par c+cool dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/07/2008, 09h46
  3. "insert into" de valeurs provenant d'une autre table
    Par jgfa9 dans le forum Requêtes
    Réponses: 5
    Dernier message: 31/01/2008, 09h44
  4. Réponses: 5
    Dernier message: 12/12/2006, 16h24
  5. Mise à jour de données à partir d'une autre table
    Par rsc dans le forum Langage SQL
    Réponses: 7
    Dernier message: 05/04/2006, 10h53

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