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

Requêtes MySQL Discussion :

Requête pourtant simple sur Table unique


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Février 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2021
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Requête pourtant simple sur Table unique
    Bonsoir

    je cherche sur une table à remplacer un champ par un autre champ de la même fiche si certaines conditions

    table delivery_slips

    id cashing_at amount_receive cashing_amount
    1 2021-03-31 100 100
    2 150 0
    3 200 0
    4 2021-03-31 120 120

    je souhaite dire

    pour les fiches entre 2 et 3 (incluses) copier montant du dans montant payé (amount_receive => cashing_amount) ET mettre la date cashing_at = 2021-03-31

    merci d'avance .. suis un peu ennuyé sur ce coup la

    ++

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut jguerrea.

    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
    --------------
    START TRANSACTION
    --------------
     
    --------------
    set session collation_connection = "latin1_general_ci"
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`              integer unsigned NOT NULL auto_increment primary key,
      `cashing_at`      char(10)             NULL,
      `amount_receive`  decimal(15,2)    NOT NULL,
      `cashing_amount`  decimal(15,2)    NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `test` (`cashing_at`,`amount_receive`,`cashing_amount`) VALUES
      ('2021-03-31', 100.0, 100.0),
      (''          , 150.0,   0.0),
      (''          , 200.0,   0.0),
      ('2021-03-31', 120.0, 120.0)
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+------------+----------------+----------------+
    | id | cashing_at | amount_receive | cashing_amount |
    +----+------------+----------------+----------------+
    |  1 | 2021-03-31 |         100.00 |         100.00 |
    |  2 |            |         150.00 |           0.00 |
    |  3 |            |         200.00 |           0.00 |
    |  4 | 2021-03-31 |         120.00 |         120.00 |
    +----+------------+----------------+----------------+
    --------------
    update `test`
       set cashing_amount = amount_receive,
           cashing_at     = '2021-03-31'
     where id in (2,3)
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+------------+----------------+----------------+
    | id | cashing_at | amount_receive | cashing_amount |
    +----+------------+----------------+----------------+
    |  1 | 2021-03-31 |         100.00 |         100.00 |
    |  2 | 2021-03-31 |         150.00 |         150.00 |
    |  3 | 2021-03-31 |         200.00 |         200.00 |
    |  4 | 2021-03-31 |         120.00 |         120.00 |
    +----+------------+----------------+----------------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Février 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2021
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci si 1000 fois

    si je peux te demander encore une petite aide

    si je dois prendre une plage d'id, genre de id 1231 à id 1541, je remplace where id in (2,3) par where id > 1231 and ID < 1541, c'est bon ?

    merci encore !!

    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
    update `test`
       set cashing_amount = amount_receive,
           cashing_at     = '2021-03-31'
     where id in (2,3)
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+------------+----------------+----------------+
    | id | cashing_at | amount_receive | cashing_amount |
    +----+------------+----------------+----------------+
    |  1 | 2021-03-31 |         100.00 |         100.00 |
    |  2 | 2021-03-31 |         150.00 |         150.00 |
    |  3 | 2021-03-31 |         200.00 |         200.00 |
    |  4 | 2021-03-31 |         120.00 |         120.00 |
    +----+------------+----------------+----------------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut jguerrea.

    Oui, tu peux, mais il y a mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where id between 1231 and 1541
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    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
    Bonjour
    Citation Envoyé par jguerrea Voir le message
    je cherche sur une table à remplacer un champ par un autre champ de la même fiche si certaines conditions
    Dans une base de données, il n'y a ni champs, ni fiches !
    Les champs sont des zones de saisie d'un formulaire ou d'édition d'un état. Dans une table, il y a des colonnes.
    Quant aux fiches, se sont des accessoires de bureau, sans rapport avec les bases de données, je suppose que vous voulez parler de lignes de la même table.


    Citation Envoyé par jguerrea Voir le message
    si je dois prendre une plage d'id, genre de id 1231 à id 1541, je remplace where id in (2,3) par where id > 1231 and ID < 1541, c'est bon ?
    Sauf cas très particulier, on ne doit pas filtrer sur des identifiants techniques attribués par le SGBD, ces identifiants ne doivent servir qu'aux jointures.
    Si le besoin est avéré, l'utilisation de BETWEEN est plus simple : where id between 1231 and 1541

Discussions similaires

  1. [AC-2007] requete avec critère sur table
    Par paulmor56 dans le forum Access
    Réponses: 1
    Dernier message: 14/10/2014, 13h34
  2. [ODBC] Plantage d"une requete pourtant simple
    Par thebarbarius dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 28/10/2010, 13h43
  3. [AC-2000] [QRY SQL]Requete ajout imbriquées sur Tables Relationnelle
    Par Barbaboulle dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 12/10/2009, 11h00
  4. problème Trigger sur table unique
    Par speedev dans le forum SQL Procédural
    Réponses: 11
    Dernier message: 21/01/2009, 12h09
  5. bloquage sur une requete pourtant simple
    Par mdr_cedrick dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/04/2008, 15h55

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