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 :

Probleme avec un UPDATE


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut Probleme avec un UPDATE
    Salut,

    J'ai besoin d'aide parrapport à une requête SQL. J'essai de faire une modification sur un certains type de tuples d'une table de ma base de données, mais je ne vois pas comment m'y prendre.
    Ma requête doit normalement ressembler à sa:

    UPDATE bug SET severity=5 WHERE ....

    et dans le where, je dois pouvoir sélectionner les tuples concerner par la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select lnk_bug_product.status_id, bug.severity_id, bug.bug_id
    from lnk_bug_product, bug
    where lnk_bug_product.bug_id = bug.bug_id
    and lnk_bug_product.status_id = 6;

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Si bug_id est la clé primaire de bug ...
    Je dirais
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE bug SET severity=5 WHERE bug.bug_id in 
    (
    select bug.bug_id 
    from lnk_bug_product, bug 
    where lnk_bug_product.bug_id = bug.bug_id 
    and lnk_bug_product.status_id = 6)
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    Jai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    UPDATE bug 
    SET severity = 5 
    WHERE severity_id IN( 
    SELECT bug.severity_id 
    FROM lnk_bug_product, bug 
    WHERE lnk_bug_product.bug_id = bug.bug_id 
    AND lnk_bug_product.status_id = 6)
    et il me dit que j'ai une erreur de synthaxe SQL !
    Et c'est la même chose lorsque j'essai d'effectuer ta requête.

  4. #4
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Bonjour,

    tout dépend du SGBD car la syntaxe des UPDATE peut différer.
    Pour SQL Server je pense que ceci peut fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE bug 
    SET severity=5 
    FROM bug b
    WHERE EXISTS
    (select lnk_bug_product.status_id, bug.severity_id, bug.bug_id 
    from lnk_bug_product 
    where lnk_bug_product.bug_id = b.bug_id 
    and lnk_bug_product.status_id = 6)

  5. #5
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    Il est pas content du tout MySQL.
    Il redit la même erreur (erreur de synthaxe).
    il veut pas du tout du "FROM" après le "SET"

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    La syntaxe UPDATE ...; FROM est spécifique à MS SQL Server.

    De plus SQL n'admet pas d'alias pour la table cible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE MatTable T 
    ...
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE MaTable as T 
    ...
    est donc illégal

    Une syntaxe propre est effectivement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Matable
    SET MaColonne = MaValeur
    WHERE MaClef IN (SELECT MaClef FROM ... )
    Si la clef est composite et que le SGBDR accepte le ROW VALUE CONSTRUCTOR, alors on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Matable
    SET MaColonne = MaValeur
    WHERE (MaColClef1, MaColClef2, MaColClef3)  IN (SELECT MaColClef1, MaColClef2, MaColClef3 FROM ... )
    De plus certaines versions de MySQL n'acceptent pas les sous requêtes.

    Lisez les articles que j'ai écrit à ce sujet :
    Pour les update avec sous requêtes
    http://sqlpro.developpez.com/cours/sqlaz/dml/#L3.5
    Pour le Row Value Constructor
    http://sqlpro.developpez.com/cours/sqlaz/select/#L8

    A +

    [code]
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    J'ai tout essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    UPDATE bug 
    SET severity=5 
    WHERE bug.bug_id = ( 
    SELECT bug.bug_id 
    FROM bug, lnk_bug_product 
    WHERE lnk_bug_product.bug_id = bug.bug_id 
    AND lnk_bug_product.status_id = 6);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    UPDATE bug 
    SET severity=5 
    WHERE bug.bug_id IN ( 
    SELECT bug.bug_id 
    FROM bug, lnk_bug_product 
    WHERE lnk_bug_product.bug_id = bug.bug_id 
    AND lnk_bug_product.status_id = 6);
    et toutes les variantes, mais j'ai toujours un problème de synthaxe.
    Je vois pas du tout comment faire pour régler mon problème.

  8. #8
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Est-ce que la version de MySQL tolère les requêtes imbriquées ????

  9. #9
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    Comment le savoir?

  10. #10
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Les sous-requêtes ne sont acceptées qu'à partir des versions 4.1, donc si la version est antérieure elles ne fonctionnent pas.

  11. #11
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    bon ba c'est mort alors.
    Question con : y'a pas moyen de passer d'une version à l'autre sans pour autant changer qqch dans la base de données?

  12. #12
    Membre actif Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Points : 241
    Points
    241
    Par défaut
    Je ne connais pas assez MySQL pour répondre, mais tu peux essayer de poser la question sur le forum MySQL.

    Good Luck !

  13. #13
    Membre régulier
    Inscrit en
    Mai 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 172
    Points : 74
    Points
    74
    Par défaut
    Bon bah merci pour votre aide à tous.
    Je vais essayer de trouver une solution ou je vais me pendre.
    ++

Discussions similaires

  1. [Mysql 3.23] Probleme avec un UPDATE
    Par griese dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/01/2007, 17h08
  2. Probleme avec Requete Update
    Par Didier77 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 24/07/2006, 14h20
  3. [MySQL] Probleme avec requete UPDATE
    Par Chromatic dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 09/02/2006, 14h17
  4. Probleme avec requete UPDATE sur ACCESS
    Par Chromatic dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/01/2006, 11h03
  5. Probleme avec l'update
    Par belabyad dans le forum ASP
    Réponses: 8
    Dernier message: 02/05/2005, 11h18

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