1. #1
    Membre émérite

    Profil pro
    Inscrit en
    février 2005
    Messages
    1 749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 1 749
    Points : 2 301
    Points
    2 301

    Par défaut [WD12] Requête UPDATE basée sur une jointure ?

    Bonjour,

    Savez-vous si HyperFile peut exécuter une requête UPDATE basée sur une jointure, comme d'autres SGBD savent le faire ?

    Exemple de requête:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE T_GAUCHE 
        INNER JOIN T_DROITE 
        ON T_GAUCHE.ID = T_DROITE.ID 
    SET T_GAUCHE.INFO_DESTINATION = T_DROITE.INFO_SOURCE;

    J'ai tenté d'exécuter cette requête.
    Je n'ai pas de message d'erreur à l'exécution, mais elle reste sans effet.

    Auriez-vous une idée pour m'aider ?
    Avez-vous déjà utilisé ce genre de requête avec HyperFile ?

    Merci !
    _

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur freelance
    Inscrit en
    juillet 2002
    Messages
    2 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : juillet 2002
    Messages : 2 317
    Points : 4 741
    Points
    4 741

    Par défaut

    Bonjour
    C'est étonnant qu'il n'y ait pas de message d'erreur car HyperFile ne sait pas gérer ça

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    février 2005
    Messages
    1 749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 1 749
    Points : 2 301
    Points
    2 301

    Par défaut

    hpascal merci de ton aide.

    Citation Envoyé par hpascal Voir le message
    C'est étonnant qu'il n'y ait pas de message d'erreur car HyperFile ne sait pas gérer ça
    J'ai pas mal cherché, mais je n'ai trouvé nul part une information spécifiant que cette syntaxe n'est pas supportée.

    D'où tiens-tu cette information ? Peut-être est-ce une expérience personnelle ?
    _

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : mars 2002
    Messages : 899
    Points : 1 097
    Points
    1 097

    Par défaut

    Test effectué sur HF14:
    Code non supporté : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE T_GAUCHE 
        INNER JOIN T_DROITE 
        ON T_GAUCHE.ID = T_DROITE.ID 
    SET T_GAUCHE.INFO_DESTINATION = T_DROITE.INFO_SOURCE;

    Code supporté : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE T_GAUCHE 
        INNER JOIN T_DROITE 
        ON T_GAUCHE.ID = T_DROITE.ID 
    SET T_GAUCHE.INFO_DESTINATION = 'une chaine';

    Code très dangereux : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE T_GAUCHE 
        INNER JOIN T_DROITE 
        ON T_GAUCHE.ID = T_DROITE.ID 
    SET T_GAUCHE.INFO_DESTINATION = LEFT(T_DROITE.INFO_SOURCE, ;
    Très dangereux : ça efface les données de T_GAUCHE.INFO_DESTINATION.
    Les lignes sont bien mises à jour, mais pas avec les bonnes données

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    février 2005
    Messages
    1 749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 1 749
    Points : 2 301
    Points
    2 301

    Par défaut

    Merci Bowen !

    Citation Envoyé par Bowen Voir le message
    Test effectué sur HF14:
    Code non supporté : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE T_GAUCHE 
        INNER JOIN T_DROITE 
        ON T_GAUCHE.ID = T_DROITE.ID 
    SET T_GAUCHE.INFO_DESTINATION = T_DROITE.INFO_SOURCE;
    ...
    Code très dangereux : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE T_GAUCHE 
        INNER JOIN T_DROITE 
        ON T_GAUCHE.ID = T_DROITE.ID 
    SET T_GAUCHE.INFO_DESTINATION = LEFT(T_DROITE.INFO_SOURCE, ;
    Très dangereux : ça efface les données de T_GAUCHE.INFO_DESTINATION.
    Les lignes sont bien mises à jour, mais pas avec les bonnes données
    Justement, le but de ma requête est de modifier les données de T_GAUCHE à partir des données de T_DROITE portant sur une valeur identique du champ ID.

    Donc je crois comprendre qu'il faut s'y prendre autrement.

    Encore merci à vous deux.
    _

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : mars 2002
    Messages : 899
    Points : 1 097
    Points
    1 097

    Par défaut

    Citation Envoyé par =JBO= Voir le message
    Donc je crois comprendre qu'il faut s'y prendre autrement.
    à mon avis, un parcours d'une requête de toutes les lignes de T_DROITE qui sont dans T_GAUCHE et pour lesquelles la valeur de INFO_DESTINATION est différente, puis accès direct à T_GAUCHE

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    février 2005
    Messages
    1 749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 1 749
    Points : 2 301
    Points
    2 301

    Par défaut

    Encore merci à toi Bowen.

    Je vois qu'aujourd'hui, tu fais des étincelles sur le forum.

    D'ailleurs, je suis bien content qu'il soit là notre forum !


    _

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur freelance
    Inscrit en
    juillet 2002
    Messages
    2 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : juillet 2002
    Messages : 2 317
    Points : 4 741
    Points
    4 741

    Par défaut

    D'où tiens-tu cette information ? Peut-être est-ce une expérience personnelle ?
    Oui j'avais une requête de ce type dans une appli multi-cibles et ça ne marchait pas sur HyperFile (pas que sur HyperFile d'ailleurs)

    Par contre je viens d'essayer l'exemple de Bowen avec une valeur fixe, ça marche effectivement.
    ça permet au moins de filtrer la table à partir d'une jointure, c'est déjà ça ...

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

Discussions similaires

  1. [AC-2010] Problème à l'exécution d'une requête suppression basée sur une requête sélection
    Par Philippe1975 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 14/06/2013, 22h21
  2. Réaliser une requête croisée basée sur une Select
    Par sakia dans le forum VBA Access
    Réponses: 6
    Dernier message: 15/09/2010, 17h25
  3. Réponses: 7
    Dernier message: 21/04/2010, 19h27
  4. Requête CpteDom basée sur une requête
    Par Yoshi592 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/07/2007, 12h04
  5. Update sur une jointure
    Par nellynew dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/01/2007, 17h56

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