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

WinDev Discussion :

Requête mise a jour : argh. [WD20]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2007
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 297
    Points : 129
    Points
    129
    Par défaut Requête mise a jour : argh.
    Bonjour

    J'ai un fichier hfsql membre avec les rubriques suivantes :

    Nom
    Prenom
    Ville
    Pays
    Code_ISO_pays
    EU

    Pour l'instant seules les rubriques Nom Prenom Ville et pays sont renseignées
    Par ex :
    Durant Bob Paris France


    et un fichier pays avec les rubriques suivantes :

    Nom_pays_FR
    Nom_pays_US
    Code_ISO_Pays
    EU


    La fichier Pays contient tous les pays en français, anglais et indique le code ISO propre et si le pays fait partie de l'EU.

    par ex :
    France France FRA oui
    Autriche Austria AUT oui


    Je voudrais mettre a jour les rubriques Code_ISO_pays et EU de chaque enregistrement du fichier membre en fonction du nom de pays déjà renseigné.

    je me casse la tête pour faire la requête

    Une bonne âme peut m'aider ?

    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,
    En ajoutant une clé unique sur la table membre, c'est faisable avec une seule requête:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    insert into membre(memre.id,Nom, Prenom, Ville, Pays, Code_ISO_pays, EU)
    select m.id,m.Nom
     m.Prenom
     m.Ville
     m.Pays 
     p.Code_ISO_pays 
     p.EU
    from membre m
    inner join pays p on p.nom_pays_fr= m.pays
    update duplicates

    Cela étant dit, je pense surtout que tu devrais supprimer les rubriques pays et eu du fichier membre, et ne garder que le code iso du pays. Une jointure entre les deux fichiers te permet de retrouver les données du pays d'un membre.

    Tatayo.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Je plussoie la proposition de tatayo de supprimer ces infos en doublons du fichier membre.

    En revanche je ne vois pas pourquoi il fait un insert avec une gestion des duplicates plutôt qu'un bête UPDATE avec jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE membre m
    INNER JOIN pays p ON p.nom_pays_fr= m.pays
    SET m.Code_ISO_pays=p.Code_ISO_pays, m.EU = p.EU
    ou pour SQLServer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE m
    SET m.Code_ISO_pays=p.Code_ISO_pays, m.EU = p.EU
    FROM  membre m INNER JOIN pays p ON p.nom_pays_fr= m.pays
    (au passage, elle est pas dégeu cette syntaxe SQLServer ?)

    sauf que ni l'une ni l'autre syntaxe ne sont acceptées par HFSQL... donc selon moi ça passe par de l'algo....
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    bonjour,
    Citation Envoyé par michel.souris Voir le message
    En revanche je ne vois pas pourquoi il fait un insert avec une gestion des duplicates plutôt qu'un bête UPDATE avec jointure :
    Parce que:
    Citation Envoyé par michel.souris Voir le message
    sauf que ni l'une ni l'autre syntaxe ne sont acceptées par HFSQL... donc selon moi ça passe par de l'algo....
    [/quote]

    Alors qu'un insert into() ... update duplicate devrait fonctionner (si une clé primaire est présente).

    Tatayo.

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Pardon... par ni l'une ni l'autre je voulais dire pas d'update avec jointure et pas de gestion de duplicates...
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2007
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Novembre 2007
    Messages : 297
    Points : 129
    Points
    129
    Par défaut
    Bonjour,

    Merci pour vos réponses...

    Finalement, j'ai arrêté d'essayer de le faire en SQL.

    Ce fut plus simple et plus rapide en wlangage

    Voila ce que j'ai pondu et cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    POUR TOUT Tb_contacts 
    	HExécuteRequête(Requête_Pays)
    	HLitRecherche(Requête_Pays,PaysFR,Tb_contacts.BusinessAddressCountry,hIdentique)
    	SI Tb_contacts.BusinessAddressCountry <> "" ALORS
    		Tb_contacts.Continent = Requête_Pays.Continent
    		Tb_contacts.EU = Requête_Pays.EU
    		Tb_contacts.Iso3166_alpha3 = Requête_Pays.Iso3166_alpha3
    		Tb_contacts.ONU = Requête_Pays.ONU
    		Tb_contacts.DOM = Requête_Pays.DOM
    		Tb_contacts.COM = Requête_Pays.COM
    		SI Tb_contacts.BusinessAddressCountry <> "France" ALORS 
    			Tb_contacts.Zone_pays = "Etranger"
    		SINON
    			Tb_contacts.Zone_pays = "France"
    		FIN
     
    		HModifie(Tb_contacts)
     
    	FIN
     
    FIN
    Merci à vous

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

Discussions similaires

  1. Requête MISE A JOUR
    Par roman33 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 12/06/2009, 00h41
  2. [AC-2003] Supprimer message d'une requête mise a jour
    Par kiooik dans le forum IHM
    Réponses: 3
    Dernier message: 31/05/2009, 16h20
  3. Requête mise a jour
    Par kiooik dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 26/05/2008, 09h46
  4. [Requête] mise a jour dans table
    Par Pingouin22 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/12/2006, 09h17
  5. requète mise a jour
    Par polo(31) dans le forum Requêtes et SQL.
    Réponses: 22
    Dernier message: 29/06/2006, 16h21

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