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

HyperFileSQL Discussion :

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


Sujet :

HyperFileSQL

  1. #1
    Membre chevronné
    [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é
    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 chevronné
    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é
    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 chevronné
    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é
    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 chevronné
    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é
    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 ...

###raw>template_hook.ano_emploi###