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

 Delphi Discussion :

Ajout si pas encore dans mysql


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Points : 41
    Points
    41
    Par défaut Ajout si pas encore dans mysql
    Bonjour,


    J'aimerais effectuer une comparaison entre des données présentes dans une table "patient" de mysql et les noms des patients présents dans un fichier .txt. L'objectif est d'ajouter le nom de la personne si elle n'est pas encore présente dans la table "patient" de la bdd de mysql.

    Voici un exemple de lignes du fichier .txt

    aderwel, Yvonne Marie Yvonne19080505655 00007-01 1939-01-01 Dupire 0ABUT990102104024 0A08:00 16031973260536100 RESIDENCE Edel 00007-01
    aderwel, Yvonne Marie Yvonne19080505655 00007-01 1939-01-01 Dupire 0ABUT990102104024 0A08:00 16032173260536100 RESIDENCE Edel 00007-01


    Le nom de la personne étant "aderwel", j'aimerais donc que si ce nom n'est pas encore dans la bdd mysql, de l'ajouter. Mais bon c'est plus facile à dire qu'à faire... .


    Je suis parti sur cette base, mais il doit certainement y avoir plein de fautes...

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    procedure TFficheEnvoi.BitBtn2Click(Sender: TObject);
    procedure CompareStringLists(List1, List2 : TStringList; Missing1, Missing2, Common1 : TStrings);
      var
        I: Integer;
        J: Integer;
      begin
        List1.Sort;
        List2.Sort;
        I := 0;
        J := 0;
        while (I < List1.Count) and (J < List2.Count) do     // tant qu'on est pas à la fin des deux listes
        begin
          if List1[I] < List2[J] then
          begin
            Missing2.Add(List1[I]);
            Inc(I);                                 // on incremente i de 1
          end
          else if List1[I] > List2[J] then
          begin
         //   Missing1.Add(List2[J]);            on fait rien  car je veux pas l'ajouter
            Inc(J);                              // on incrémente j de 1
          end
          else
          begin
            Common1.Add(List2[J]);               //si c'est identique
            Inc(I);
            Inc(J);
          end;
        end;
        for I := I to List1.Count - 1 do
          Missing2.Add(List1[I]);
     
      end;
     
     
    var
    i, j, k : Integer;
    List1: TStringList;
    List2: TStringList;
    CQuery : TZReadOnlyQuery;
     
     
    begin
         List1 := TStringList.Create;
      List2 := TStringList.Create;
     
     CQuery:=TZReadOnlyQuery.Create(Nil);
     try
     
       CQuery.Connection:=ZTable4.Connection;
       CQuery.SQL.Text:='select nom from patient';           // je sélectionne tous les noms des patients
       CQuery.Prepare;
     
     
      for i := 0 to Memo1.Lines.Count-2 do                   // pour les lignes qui sont dans le memo2
       begin
     
       list1:=copy (memo1.Lines[i],1,27);                        // je copie les 27 premiers caractères de chaque ligne
     
       end;
       list2:=ZTable4nom.Text;       // je selectionne tous les noms de la ztable4
     
     
     
        List1.Clear();
        List2.Clear();
     
     
        List1.LoadFromFile(OpenDialog1.FileName);
        List2.LoadFromFile(cquery.SQL);
     
        CompareStringLists(List1, List2, missing1, missing2);
     
     
      finally
        List2.Free;
        List1.Free;
      end;
    end;

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    S'il s'agit d'ajouter un patient absent de la base, déduire sa présence sur le seul critère "nom" exclut d'avoir plusieurs membres d'une même famille !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    oui mais en fait, dans le champs nom, je met "aderwel, Yvonne Marie" donc à la fois nom et prénom. ça c'est bon

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Non, pas forcément ! Petite histoire d'archives hospitalières : même nom, même prénom, même date de naissance, mais 2 patientes distinctes. Une carte de groupe sanguin qui traînait hors d'un dossier a été rangée dans le mauvais dossier, entraînant un problème transfusionnel...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    ok mais de toute façon je n'ai pas le numéro national de chaque personne... . Donc je dois faire avec ce qui est dans le fichier.

  6. #6
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Et simplement en SQL avec INSERT INTO SELECT .. NOT EXISTS ?
    - ou le RecordCount sur le TSQLQuery ?
    - ou le IndexOf sur la TStringList ?

    Par contre le LoadFromFile sur le texte d'une requête SQL ça fonctionne pas

    Tu essayes de charger tes listes (List1 et List2) et tu vides les données avant de refaire le LoadFromFile du coup je vois pas l’intérêt des précédents traitements ?

  7. #7
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    ok je connaissais pas les requetes sql ... not exists. J'ai essayé et j'ai maintenant ceci :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    procedure TFficheEnvoi.BitBtn2Click(Sender: TObject);
     
    var i : Integer;
    z: integer;
    CQuery : TZReadOnlyQuery;
     
     
    begin
     CQuery:=TZReadOnlyQuery.Create(Nil);
     
     try
       CQuery.Connection:=ZTable4.Connection;
       CQuery.SQL.Text:='insert into patient(nom) select nom from patient where not exists (select nom from patient where nom = :N)';
       CQuery.Prepare;
     
     
      for i := 0 to Memo1.Lines.Count-2 do
       begin
     
     
          ZTable4.Append;
     
     
     
             CQuery.ParamByName('N').asString:=copy (memo1.Lines[i],1,27);
             CQuery.Active:=True;
             ZTable4nom.Text:=CQuery.FieldbyName('nom').asString;
             CQuery.Active:=False;
     
        ZTable4.Post;
             end;
     
    finally
       Cquery.free;
    end;
     
    end;
    J'ai droit à un message qui me dit "can not open a resultset".

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 942
    Points
    40 942
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    J'ai droit à un message qui me dit "can not open a resultset".
    normal, une requête qui ne renvoi pas de résultat (UPDATE, INSERT, DELETE) doit être exécutée avec ExecSQL pas Open.

    passons maintenant à cette requête !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'insert into patient(nom) select nom from patient where not exists (select nom from patient where nom = :N)';
    pour moi elle est absurde ! Vos cours de SQL sont à réviser, à suivre ou à prendre selon le cas.

    Si est un index unique ou une clé primaire, d'un point de vue Delphi il suffirai de gérer l'exception sans avoir rien de plus à faire,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
       CQuery.SQL.Text:='insert into patient(nom) values(:nom)';
    ...
    try
      CQuery.ParamByName('nom').asString:= copy (memo1.Lines[i],1,27);
      CQuery.ExecSQL;
    except
    end;
    Avec mySQL (et un peu de recherche de votre part) on peut aussi utiliser INSERT IGNORE INTO CLIENT SET NOM=:nom toujours si la colonne NOM est un INDEX UNIQUE ou une CLE PRIMAIRE

    enfin dans le cas contraire (la colonne n'est pas un Index unique, il y a plusieurs critères) on utilisera alors correctement le EXISTS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO PATIENT (NOM) VALUES (:NOM) WHERE NOT EXISTS (SELECT 1 FROM PATIENT WHERE NOM=:NOM)
    Voilà, vous avez trois solutions, ceci étant je continue à trouver cette application étrange :
    - utilisation d'un fichier texte de longueur fixe qui vient d'on ne sait où et qui manque cruellement d'identification précise
    ok mais de toute façon je n'ai pas le numéro national de chaque personne... . Donc je dois faire avec ce qui est dans le fichier.
    il ne tient qu'à vous d'indiquer à votre client que son fichier peut induire des erreurs graves

    - utilisation abusive de Stringlist alors que vous pourriez utiliser avantageusement , dans cette configuration, les expressions régulières (je me répéte)

    et enfin identification de patient plus que douteuse (juste le nom !) comme nous l'avons déjà signalé à plusieurs occasions (homonymie), votre structure de base de données me semble peu fiable
    Comme l'a souligné tourlourou, quoique ce cas doit vraiment être rare, cela peut être catastrophique dans le domaine de la santé !

    PS. évitez de mettre comme nom de paramètre le même nom que la colonne (ce qui peut être perturbant pour un lecteur) par exemple en préfixant le nom du paramètre avec P_

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO PATIENT (NOM) VALUES (:P_NOM) WHERE NOT EXISTS (SELECT 1 FROM PATIENT WHERE NOM=:P_NOM)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #9
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    D'accord, mon champs "nom" n'est ni clé primaire ni unique.

    Pourriez-vous me dire pourquoi le 1 de SELECT 1 FROM PATIENT WHERE NOM=_NOM? Cela signifie-t-il "s'il est déjà présent une fois dans la liste"?

    En suivant mon raisonnement, j'arrive à ça...

    Je défini la connection, la requete, je prépare la requête. Pour chacune des lignes du mémo1, je copie les caractères 1 à 27, je ferme la connection et j'envoi les données.

    et ça foire du côté de le requete sql... "sql error: you've an error in your sql syntax blablabla WHERE NOT EXISTS (SELECT 1 FROM PATIENT WHERE NOM=null).
    J'ai trouvé ceci sur un site qui ressemble à votre requete,
    INSERT INTO api(site, `key`)
    SELECT * FROM (SELECT 'example.com','a-random-key') AS tmp
    WHERE NOT EXISTS (SELECT * FROM api WHERE site='example.com') LIMIT 1;

    mais ça ne change rien ...

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    procedure TFficheEnvoi.BitBtn2Click(Sender: TObject);
    var i : Integer;
     
    CQuery : TZReadOnlyQuery;
     
    begin
     CQuery:=TZReadOnlyQuery.Create(Nil);
     
     
       CQuery.Connection:=ZTable4.Connection;
       CQuery.SQL.Text:='INSERT INTO PATIENT (NOM) VALUES (:NOM) WHERE NOT EXISTS (SELECT 1 FROM PATIENT WHERE NOM= :NOM)';
         CQuery.Prepare;
     
     
          for i := 0 to Memo1.Lines.Count-2 do
       begin
     
              ZTable4.Append;
     
             CQuery.Active:=True;
           try
     
             CQuery.ParamByName('nom').asString:=copy (memo1.Lines[i],1,27);
             CQuery.ExecSQL;
     
             ZTable4nom.Text:=CQuery.FieldbyName('nom').asString;
             CQuery.Active:=False;
     
               ZTable4.Post;
     
    except
    end;
     
      // finally
         Cquery.free;
     
        end;
     
    end;

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 942
    Points
    40 942
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    ça foire du côté de le requete sql...
    ce n'est pas du côté de la requête mais de votre code : vous avez laissé ligne 20 CQuery.Active:=True ! et vous utilisez un Ztable inutile

    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
    23
    24
    25
    26
    27
    28
    29
    30
    procedure TFficheEnvoi.BitBtn2Click(Sender: TObject);
    var i : Integer;
     
    CQuery : TZReadOnlyQuery;
     
    begin
      CQuery:=TZReadOnlyQuery.Create(Nil);
     try//<< manquant ce qui explique dans votre code le finally commenté  
      CQuery.Connection:=ZTable4.Connection;
      // avec ce sql c'est le SGBD qui fait presque tout le travail, il ne reste qu'à passer le paramètre 
      CQuery.SQL.Text:='INSERT INTO PATIENT (NOM) VALUES (:NOM) WHERE NOT EXISTS (SELECT 1 FROM PATIENT WHERE NOM= :NOM)';
      CQuery.Prepare;
      for i := 0 to Memo1.Lines.Count-2 do
       begin
           ZTable4.Append;
          CQuery.Active:=True;
           try
             CQuery.ParamByName('nom').asString:=copy (memo1.Lines[i],1,27);
             CQuery.ExecSQL;
     
             ZTable4nom.Text:=CQuery.FieldbyName('nom').asString;
             CQuery.Active:=False;
             ZTable4.Post;
    except
    end;
       finally // << décommenté
         Cquery.free;
        end;
    end;
    de plus dans le cas de ce SQL, le try except end; est inutile

    Pourriez-vous me dire le pourquoi du 1 de [CODEINLINE]SELECT 1 FROM PATIENT WHERE NOM= :NOM[/CODE]?
    Cela signifie-t-il "s'il est déjà présent une fois dans la liste"?
    le 1 est pour éviter de ramener une colonne, ici le 1 est une colonne sans nom ayant toujours une valeur de 1
    Non cela ne signifie pas s'il est déjà présent une fois, c'est plutôt le rôle de limit 1
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #11
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    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
    23
    24
    25
    26
    procedure TFficheEnvoi.BitBtn2Click(Sender: TObject);
    var i : Integer;
     
    CQuery : TZReadOnlyQuery;
     
    begin
      CQuery:=TZReadOnlyQuery.Create(Nil);
     try
      CQuery.Connection:=ZTable4.Connection;
     
      CQuery.SQL.Text:='INSERT INTO PATIENT (NOM) VALUES (:NOM) WHERE NOT EXISTS (SELECT 1 FROM PATIENT WHERE NOM=:NOM)';
      CQuery.Prepare;
      for i := 0 to Memo1.Lines.Count-2 do
       begin
     
             CQuery.ParamByName('nom').asString:=copy (memo1.Lines[i],1,27);
             CQuery.ExecSQL;
     
     
        end;
       finally
     
         Cquery.free;
     end;
     
    end;
    Si je mets comme requête "INSERT INTO PATIENT (NOM) VALUES (:NOM)", ça fonctionne sans soucis. Par contre, si je la laisse telle quelle, j'ai toujours ce même message d'erreur qui me dit de consulter la manuel pour la bonne syntaxe de WHERE NOT EXISTS (SELECT 1 FROM PATIENT WHERE NOM="maxime") // maxime étant le contenu de la première ligne par exemple.

    J'ai essayé WHERE NOT EXISTS (SELECT 1 FROM PATIENT.nom WHERE NOM=:NOM)
    WHERE NOT EXISTS (SELECT 1 FROM PATIENT (nom) WHERE NOM=:NOM)
    (WHERE NOT EXISTS (SELECT 1 FROM PATIENT WHERE NOM=:NOM))
    ... je ne trouve pas LA solution

  12. #12
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Fais-le en 2 temps : un SELECT nom pour savoir s'il existe, puis un INSERT si inconnu.
    Ou un REPLACE si ta colonne nom est unique ou PK.
    Voir aussi INSERT...IGNORE.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  13. #13
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    oui, avec 'INSERT IGNORE INTO patient SET NOM=_nom' et le champ 'nom' en unique, ça fonctionne.

    je comprends pas ce qui bloquait avec la requete précédente.


    en tout cas merci à vous deux!

  14. #14
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par bertrantitude Voir le message
    oui, avec 'INSERT IGNORE INTO patient SET NOM=_nom' et le champ 'nom' en unique, ça fonctionne.

    je comprends pas ce qui bloquait avec la requete précédente.


    en tout cas merci à vous deux!
    Il te manquait la requete de selection avant la clause where

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 942
    Points
    40 942
    Billets dans le blog
    62
    Par défaut
    Bonjour
    Citation Envoyé par bertrantitude Voir le message
    oui, avec 'INSERT IGNORE INTO patient SET NOM=_nom' et le champ 'nom' en unique, ça fonctionne.
    je comprends pas ce qui bloquait avec la requete précédente.
    les joies et spécificités de MySQL ! ce dernier n'étant pas de mon domaine de compétence
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. Executer une fonction dans un module pas encore importe
    Par Aragorn_destroy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2007, 14h21
  2. Réponses: 1
    Dernier message: 09/02/2007, 09h45
  3. [SQL/BDD] Ajout massif de donnees dans une base mysql
    Par tomWag dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/05/2006, 18h06
  4. Réponses: 12
    Dernier message: 02/01/2006, 22h24
  5. Séquence pas encore définie dans cette session
    Par hair_peace dans le forum Oracle
    Réponses: 2
    Dernier message: 03/11/2005, 17h04

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