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 conditions de 2 colonnes


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Update avec conditions de 2 colonnes
    Bonjour à toutes et à tous.
    Je souhaite faire un "update" de la colonne d'une table avec des conditions de 2 autres colonnes de cette table (voir image), c'est les conditions qui me "bloquent":
    Je souhaite que:
    Toutes les lignes de la colonne 6 deviennent des "2" à conditions que les lignes correspondantes, de la colonne 2 et 4 soient des 0.
    Ce doit être ce "genre" de commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE table
    SET colonne 6='2'
    WHERE colonne 2='0'
    WHERE colonne 4='0'
    J'espère avoir étais assez clair heuu...
    Merci d'avance.
    Nom : 44203308_600621653689615_1295120428599083008_n.jpg
Affichages : 330
Taille : 26,4 Ko

  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 803
    Points
    30 803
    Par défaut
    Comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE table
    SET colonne 6='2'
    WHERE colonne 2='0'
      AND colonne 4='0'
    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 Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Avec les vrais noms de la table et des colonnes j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE messages
    SET public='2'
    WHERE group='70'
    AND page='0'
    à chaque fois il me renvoie "#1064 - Erreur de syntaxe près de 'group = '70' AND (public <> '2')' à la ligne 1"

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Pour que l'on puisse vous aider efficacement, il faut que vous publiez la description exacte de votre table (ordre DDL "CREATE TABLE")


    Citation Envoyé par sersib Voir le message
    à chaque fois il me renvoi "#1064 - Erreur de syntaxe près de 'group = '70' AND (public <> '2')' à la ligne 1"
    Par ailleurs, dans la requête que vous avez communiquée, il n'y a pas le filtre "AND PUBLIC <>'2'"

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Voilà le contenu d'une sauvegarde SQL

    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
    -- Structure de la table `messages`
    --
     
    CREATE TABLE `messages` (
      `id` int(12) NOT NULL,
      `uid` int(32) NOT NULL,
      `message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
      `tag` varchar(256) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `type` varchar(16) CHARACTER SET latin1 NOT NULL DEFAULT '',
      `value` varchar(10240) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `group` int(11) NOT NULL DEFAULT '0',
      `page` int(11) NOT NULL DEFAULT '0',
      `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `public` int(11) NOT NULL,
      `likes` int(11) NOT NULL DEFAULT '0',
      `comments` int(11) NOT NULL DEFAULT '0',
      `shares` int(11) NOT NULL DEFAULT '0'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    GROUP est un mot réservé du langage SQL. Comme vous avez mal nommé cette colonne et que vous êtes sous MySQL, il faut entourer la colonne d'apostrophes inversées, comme dans le DDL que vous nous avez fourni.
    Idem si vous utilisez les colonnes value (encore que le mot réservé soit VALUES) et time.

    Pour éviter ce genre de désagrément, à l'avenir, préfixez tous vos noms de colonnes. Exemple avec votre table message : msg_id, msg_group, msg_value, msg_time... Comme ça, pas besoin de s'emmerder à écrire les apostrophes inversées et pas de problème de confusion avec des mots du langage SQL.

    De plus, si vous conditions portent sur des colonnes de type numérique, ne donnez pas des valeurs de type chaîne !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci de votre réponse très efficace, j'avance doucement.
    Concrètement je dois taper ça ? (curieux car en simulant, le résultat du nombre trouvé est pas cohérent).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE messages
    SET public=2
    WHERE "group"=70
    AND page=0
    ne donnez pas des valeurs de type chaîne
    Vous pouvez me préciser svp ?
    Merci

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    D'après ce que je comprends de la réponse de Cinephil, vous y êtes presque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE messages
    SET public=2
    WHERE  `group`=70
    AND page=0
    Concernant [QUOTE ]ne donnez pas des valeurs de type chaîne [/QUOTE]
    Cela signifie que puisque les colonnes public, group, page sont des entiers, dans un update il n'y a pas lieu d'entourer les valeurs par des quotes, le caractère '


    Cordialement
    Soazig

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,
    Un grand merci à vous tous, avec les dernières réponses j'ai réussi et ça a marché.
    Encore un grand merci.

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

Discussions similaires

  1. Nb.si avec conditions sur 2 colonnes
    Par Gary dans le forum Excel
    Réponses: 1
    Dernier message: 08/08/2007, 15h19
  2. [VBA-E] Minimum d'une colonne avec condition sur autre colonne
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2007, 17h01
  3. Jointure avec conditions sur plusieurs colonnes
    Par ben53 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 28/11/2005, 09h27
  4. update avec condition sur autre table
    Par allowen dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/04/2005, 15h02
  5. UPDATE avec condition sur d'autres tables
    Par guda dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/03/2005, 11h20

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