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

Langage SQL Discussion :

Update avec SELECT imbriqués erreurs


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développement
    Inscrit en
    Février 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 55
    Points : 38
    Points
    38
    Par défaut Update avec SELECT imbriqués erreurs
    Bonjour,
    cherche à mettre une ligne d'un table à jour. Toutefois, cette table contient les id d'attribut d'autres tables.

    Voici ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim requeteModifierDessin = "UPDATE BANQUE SET"
     
            requeteModifierDessin = requeteModifierDessin & "Client_Id = (SELECT Client_Id FROM CLIENTS WHERE CLIENT LIKE '" & FenetreAjoutALaBaseDonnes.cmbNomClientAjouterDonnee.Text & "') AS Client_Id,"
            requeteModifierDessin = requeteModifierDessin & "Technologie_Id = (SELECT Technologie_Id FROM TECHNOLOGIE WHERE Description_Anglaise LIKE '" & FenetreAjoutALaBaseDonnes.cmbTechnologieAjouterDonnee.Text & "') AS Technologie_Id,"
            requeteModifierDessin = requeteModifierDessin & "Application_Id = (SELECT Application_Id FROM APPLICATION WHERE Description_Anglaise LIKE '" & FenetreAjoutALaBaseDonnes.cmbApplicationAjouterDonnee.Text & "') AS Application_Id, "
            requeteModifierDessin = requeteModifierDessin & "Disposition_Id = (SELECT Disposition_Id FROM DISPOSITION WHERE Description_Anglaise LIKE '" & FenetreAjoutALaBaseDonnes.cmbDispostionAjouterDonnee.Text & "') AS Disposition_Id "
     
            Return requeteModifierDessinAutocad

    Ainsi, j'obtiens l'erreur suivante:

    Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans System.Data.dll
    Informations supplémentaires : Erreur de syntaxe dans l'instruction UPDATE.

    Comment doit-on écrire un update avec plusieurs SELECT imbriqués?

    Merci de me répondre,

    Alex.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Je vois deux sources potentielles de problème dans cette requête.
    D'une part il ne faut pas spécifier d'alias sur les expressions calculées dans la clause SET, d'autre part il faut être certain que chacune des sous-requêtes ne retourne qu'une ligne et une seule.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développement
    Inscrit en
    Février 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    j'ai modifié ma requête afin de faire un test, le voici:


    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim requeteModifierDessin = "UPDATE BANQUE SET Client_Id = (SELECT Client_Id FROM CLIENTS WHERE CLIENT LIKE '" & Me.cmbNomClientAjouterDonnee.Text & "')"
    MsgBox(requeteModifierDessin )       
    cmd = New OleDb.OleDbCommand(requeteModifierDessin, connexionOleDb)

    J'obtiens cette erreur :

    Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans System.Data.dll
    Informations supplémentaires : L'opération doit utiliser une requête qui peut être mise à jour.

    J'ai essayé beaucoup de chose et je ne comprends pas mon erreur. Qu'est-ce qui cloche?

    Merci pour votre aide,

    Alex.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Pour ma part ce qui me choque le plus est l'absence ce clause WHERE dans ces requêtes.
    Toutes les lignes de la table doivent être mise à jour ?

    Tatayo.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Développement
    Inscrit en
    Février 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Pour ma part ce qui me choque le plus est l'absence ce clause WHERE dans ces requêtes.
    Toutes les lignes de la table doivent être mise à jour ?

    Tatayo.
    Je ne suis pas certaine de comprendre...dans la dernière requête, je veux la valeur du client dans la table qui correspond au choix entré par l'utilisateur dans le combobox.
    Oui, tout doit être mis à jour dans ma table BANQUE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Dim requeteModifierDessin = "UPDATE BANQUE SET"
    
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & "Nom_Id = (SELECT Nom_Id  FROM NOM WHERE NOM LIKE '" & Me.txtCheminDessin.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & "Client_Id = (SELECT Client_Id FROM CLIENTS WHERE CLIENT LIKE '" & Me.cmbNomClientAjouterDonnee.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & "TypeDessin_Id = (SELECT TypeDessin_Id FROM TYPEDESSIN WHERE Description_Anglaise LIKE '" & Me.cmbTypeDessinAjouterDonnee.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & "Application_Id = (SELECT Application_Id FROM APPLICATION WHERE Description_Anglaise LIKE '" & Me.cmbApplicationAjouterDonnee.Text & "')"
      
            cmd = New OleDbCommand(requeteModifierDessin, connexionOleDb)
    Erreur:
    An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll
    Additional information: Syntax error in UPDATE statement.


    Je crois que ma syntaxe n'est pas bonne.

    Voici ce que je veux faire: J'ai enregistré une ligne dans ma table BANQUE avec un nom de client, un type de dessin et d'application. Ensuite, si un utilisateur tente d'enregistrer le dessin une deuxième fois avec le même nom, un message apparaît lui disant qu'un fichier de ce nom existe déjà, mais qu'il peut le modifier. Normalement, je m'attendrais qu'après la lecture de la requête ci-dessus, l'enregistrement soit modifié en conséquence.

    Voilà, quelqu'un aurait une idée?

    Merci.

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    La démarche classique face à une erreur provenant d'une requête construite par le programme est d'afficher cette requête avant de l'exécuter.
    Cela permet de vérifier si la requête préparée est bien conforme aux attentes... et ainsi de gagner du temps dans la mise au point lorsqu'il manque des espaces ou des virgules entre les mots clés ou les expressions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      Dim requeteModifierDessin = "UPDATE BANQUE SET"
     
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & "  Nom_Id = (SELECT Nom_Id  FROM NOM WHERE NOM LIKE '" & Me.txtCheminDessin.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & ", Client_Id = (SELECT Client_Id FROM CLIENTS WHERE CLIENT LIKE '" & Me.cmbNomClientAjouterDonnee.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & ", TypeDessin_Id = (SELECT TypeDessin_Id FROM TYPEDESSIN WHERE Description_Anglaise LIKE '" & Me.cmbTypeDessinAjouterDonnee.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & ", Application_Id = (SELECT Application_Id FROM APPLICATION WHERE Description_Anglaise LIKE '" & Me.cmbApplicationAjouterDonnee.Text & "')"
     
            cmd = New OleDbCommand(requeteModifierDessin, connexionOleDb)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Tu récupères bien une ligne de client, mais tu ne spécifies pas de critère de sélection sur la table banque, vu qu'il n'y a pas de WHERE dans la requête UPDATE.
    Donc toutes les lignes de cette table vont être mise à jour.
    Actuellement tu as peut-être une seule ligne dans cette table, mais que se passera t'il quand il y en aura plusieurs ?

    Sinon par rapport à la requête, il manque des virgules entre chaque affectation.

    Tatayo.

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Développement
    Inscrit en
    Février 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    La démarche classique face à une erreur provenant d'une requête construite par le programme est d'afficher cette requête avant de l'exécuter.
    Comme vous avez pu voir dans mon premier message j'affiche ma requête à l'aide d'un message box. Je l'ai enlevé pour la clarté du message. Pour les virgules, je n'avais pas compris qu'il en fallait.

    Merci beaucoup.

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Développement
    Inscrit en
    Février 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Tatayo, je suis d'accord avec toi, je vais revoir ma requête!

    Un gros merci!

  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Citation Envoyé par alexe87 Voir le message
    j'affiche ma requête à l'aide d'un message box.
    ... et ça ne te gênait pas de lire UPDATE BANQUE SETNom_Id =, sans espace entre SET et Nom_Id ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Développement
    Inscrit en
    Février 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Après avoir effectué les modifications recommandées, j'obtiens une nouvelle erreur qui est la suivante: An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in System.Data.dll
    Additional information: Operation must use an updateable query.
    Pourtant, j'ai vérifié que ma BD n'est pas corrompue, que j'ai les accès en écriture et que je ne tente pas d'autres accès à la base de donnée. J'ai fouillé sur le net et je ne trouve pas le moyen de résoudre cette erreur. Noter que je n'ai pas de problème lors de l'insertion et la suppression.

    La requête corrigée:

    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
    Private Sub modifierUnEnregistrement()
     
            Dim cmd As OleDbCommand
     
     
            Dim requeteModifierDessinAutocad = "UPDATE BANQUE SET "
     
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & " Client_Id = (SELECT Client_Id FROM CLIENTS WHERE CLIENT LIKE '" & Me.cmbNomClientAjouterDonnee.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & ",Technologie_Id = (SELECT Technologie_Id FROM TECHNOLOGIE WHERE Description_Anglaise LIKE '" & Me.cmbTechnologieAjouterDonnee.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & ",Application_Id = (SELECT Application_Id FROM APPLICATION WHERE Description_Anglaise LIKE '" & Me.cmbApplicationAjouterDonnee.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & ",Disposition_Id = (SELECT Disposition_Id FROM DISPOSITION WHERE Description_Anglaise LIKE '" & Me.cmbDispostionAjouterDonnee.Text & "')"
            requeteModifierDessinAutocad = requeteModifierDessinAutocad & " WHERE Dessin_Id = (SELECT Dessin_Id FROM DESSINS WHERE DESSIN LIKE '" & Me.txtCheminDessin.Text & "')"
     
            MsgBox(requeteModifierDessinAutocad)
     
            cmd = New OleDbCommand(requeteModifierDessinAutocad, connexionOleDb)
     
            connexionOleDb.ConnectionString = emplacementDeLaBaseDonnees
            connexionOleDb.Open()
            cmd.ExecuteReader()
            cmd.Connection.Close()
     
        End Sub
    Quelqu'un a une idée?
    Merci,

    Alex.

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Comme ça non, mais est-ce que tu peux nous montrer la requête générée ?

    Tatayo.

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Les problèmes de syntaxe sont une chose, le périmètre fonctionnel impacté par cette requête en est une autre
    Mettre à jour des identifiants en utilisant des filtres sur des colonnes de description (!) et qui plus est utilisant des comparateurs LIKE je doute que l'unicité soit vérifiée.

    Comme l'a proposé al1_24, vous devriez d'abord effectuer un select pour vérifier non seulement la syntaxe, mais aussi et surtout la population impactée par votre requête

  14. #14
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Il est par ailleurs très dangereux de procéder comme vous le faites, un incluant directement des données saisies par l'utilisateur dans une requete SQL.
    L'utilisteur pourrait alors détourner votre requete pour éxécuter le code SQL de son choix : cf attaques par injection SQL

    En plus, si un utilisateur (bien intentionné) sais une apostrophe dans l'un des champs texte de saisie utilisés dans la requete, celle-ci ne fonctionnera plus.

  15. #15
    Nouveau membre du Club
    Femme Profil pro
    Développement
    Inscrit en
    Février 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Vous avez raison pour la sécurité. En fait, je ne procède pas comme ça dans mon code. Je passe par la fonction AddWithValue(x, x) etc. C'est simplement que ça faisait long à écrire. Ensuite, je ne comprends pas ce que vous dites par rapport aux "like" et descriptions escartegriffe...Je veux juste préciser que ce sont des petites tables indépendantes dans lesquelles il y a les choix proposés dans mes combobox et que l'unicité est vérifiée.

    Voilà merci à tous! Avec toute l'information que vous m'avez donnée, je crois que je serai en mesure de résoudre mon problème.

    Alex.

  16. #16
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par alexe87 Voir le message
    Ensuite, je ne comprends pas ce que vous dites par rapport aux "like" et descriptions escartegriffe
    Ce que je veux dire c'est que vous faites des mises à partir de sous-requetes utilisant des opérateurs "=", ce qui impose un réponse unique.

    Or, vous faites une recherche sur des libellés, chacun sait qu'un libellé a peu de chances d'être unique et de plus, vous recherchez avec un prédicat like du coup vous avez de gros risques de trouver plusieurs réponses à vos sous requêtes
    Ce d'autant plus si la chaine de caractères recherchée et contenue dans votre variable est courte et/ou encadrée par 2 wildcards %

    Donc avec un opérateur = gros risque de rejet dû à réponse multiple
    Si vous remplacez = par in, gros risque de périmètre mal maitrisé

    D'où mon interrogation sur le besoin fonctionnel

  17. #17
    Nouveau membre du Club
    Femme Profil pro
    Développement
    Inscrit en
    Février 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Bonjour,
    Tout d'abord merci pour les conseils et explications. Simplement vous dire que, dans la BD, chaque dessin d'architecture est unique, il ne peut y avoir aucun doublon. En fait, chaque dessin dans la BD se caractérise avec son path qui agit comme un "pointeur" dans le système de fichiers. Je suis dans le contexte où j'ai repris le travail d'un collègue et ce que j'ai entre les mains est une table qui répertorie, pour chaque dessin, tous les id de chaque critères qui sont dans différentes tables*. J'ai essayé de composer avec celles-ci, mais franchement ça me donne des requêtes monstrueuses. Ma première idée, était de refaire la base de données en ayant qu'une seule table. En fait, je me disais que comme les dessins sont tous uniques, je peux avoir une seule table répertoriant les données associées à chaque dessin. Ainsi, mes requêtes seraient plus faciles à construire à maintenir et donc plus sécuritaires.

    *Exemple du projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Table  Path                               
    Path_Id      Path                       
    2645      C:\blabla.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Table Technologie   
      Technologie_Id       description_technologie
             3                  UnTypeDeTechnolgie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Id Path Technologie Application ect...
     1  2645     3            13
    Sur ce, encore merci pour les conseils,

    Alex.

  18. #18
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    En ce cas vous êtes exposée à un autre danger : si les chemins changent, ce qui est assez courant dans les entreprises (vécu à plusieurs reprises chez différents clients), vos requêtes sont par terre !

  19. #19
    Nouveau membre du Club
    Femme Profil pro
    Développement
    Inscrit en
    Février 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Bonjour,
    Je suis entièrement d'accord avec vous. Toutefois, les répertoires sont protégés en écriture et ça diminue le risque de changement dans la base de données puisque seulement trois personnes y ont accès.
    Sinon, croyez-vous qu'il serait possible de stocker des fichiers de type particuliers comme .sh3d ?

    Merci beaucoup,

    Alex.

  20. #20
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    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 198
    Points : 12 774
    Points
    12 774
    Par défaut
    J'ai juste une petite question: puisque les valeurs sont issues d'une sélection dans des combos, pourquoi ne pas modifier les dites combos pour y ajouter l'ID de la ligne en question, et utiliser directement l'ID dans la requête ?
    C'est typiquement ce qu'on fait dans nos applications, ainsi dans ce genre de mise à jour il n'y a pas de sous-requête, mais une affectation directe.
    Evidemment la combo affiche une valeur "user friendly", les id sont masqués.

    Tatayo.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Requête Update avec Select.
    Par franzarelli dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/03/2008, 05h33
  2. Update avec Select : je n'y arrive pas.
    Par marye77 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 22/02/2008, 16h51
  3. UPDATE avec SELECT sur la même table
    Par Invité dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/12/2007, 03h39
  4. Requete Update avec Select imbriqué: etrange resultat!
    Par corentone dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/08/2007, 15h05
  5. requête avec SELECT imbriqués...
    Par dj_lil dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/07/2005, 11h21

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