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 :

Requete update imbriqué pose probléme avec une colonne non nulle [MySQL-5.7]


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    décembre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : décembre 2004
    Messages : 192
    Points : 76
    Points
    76
    Par défaut Requete update imbriqué pose probléme avec une colonne non nulle
    Bonjour,

    J'ai un souci avec une requête qui retourne une erreur depuis le changement de la structure d'une table.

    La requête en question est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE w5mv5_utilisateurs AS u LEFT JOIN ( SELECT userid, MAX(expiration) AS banned FROM w5mv5_utilisateurs_bannis GROUP BY userid ) AS b ON u.userid=b.userid SET u.banned=b.banned
    L'erreur qui s'affiche quand on exécute cette requête : Le champ 'banned' ne peut être nul

    La structure des deux tables en question :

    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
    CREATE TABLE IF NOT EXISTS `w5mv5_utilisateurs` (
      `userid` int(11) NOT NULL DEFAULT '0',
      `status` tinyint(1) NOT NULL DEFAULT '0',
      `status_text` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0',
      `view` varchar(8) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
      `signature` text COLLATE utf8mb4_unicode_ci,
      `moderator` int(11) DEFAULT '0',
      `banned` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
      `ordering` int(11) DEFAULT '0',
      `posts` int(11) DEFAULT '0',
      `avatar` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `timestamp` int(11) DEFAULT NULL,
      `karma` int(11) DEFAULT '0',
      `karma_time` int(11) DEFAULT '0',
      `group_id` int(4) DEFAULT '1',
      `uhits` int(11) DEFAULT '0',
      `personalText` tinytext COLLATE utf8mb4_unicode_ci,
      `gender` tinyint(4) NOT NULL DEFAULT '0',
      `birthdate` date DEFAULT NULL,
      `location` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `ip` varchar(125) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `socialshare` tinyint(1) NOT NULL DEFAULT '1',
      PRIMARY KEY (`userid`),
      KEY `group_id` (`group_id`),
      KEY `posts` (`posts`),
      KEY `uhits` (`uhits`),
      KEY `banned` (`banned`),
      KEY `moderator` (`moderator`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
     
     
    CREATE TABLE IF NOT EXISTS `w5mv5_utilisateurs_bannis` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `userid` int(11) DEFAULT NULL,
      `ip` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      `blocked` tinyint(4) NOT NULL DEFAULT '0',
      `expiration` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
      `created_by` int(11) NOT NULL,
      `created_time` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
      `reason_private` text COLLATE utf8mb4_unicode_ci,
      `reason_public` text COLLATE utf8mb4_unicode_ci,
      `modified_by` int(11) DEFAULT NULL,
      `modified_time` datetime DEFAULT NULL,
      `comments` text COLLATE utf8mb4_unicode_ci,
      `params` text COLLATE utf8mb4_unicode_ci,
      PRIMARY KEY (`id`),
      KEY `userid` (`userid`),
      KEY `ip` (`ip`),
      KEY `expiration` (`expiration`),
      KEY `created_time` (`created_time`)
    ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    Comment faire pour la requête update modifie seulement les enregistrements qui sont retournés via le select ?

    Merci d'avance

  2. #2
    Expert éminent sénior

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    4 881
    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 : 4 881
    Points : 13 669
    Points
    13 669
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Remplacez simplement la jointure outer par une jointure inner

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    décembre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : décembre 2004
    Messages : 192
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Je viens d'essayer, effectivement cela fonctionne. Merci

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

Discussions similaires

  1. ABAP2XLSX Problème avec une colonne
    Par Cuoreconleali dans le forum SAP
    Réponses: 15
    Dernier message: 24/11/2016, 09h33
  2. Réponses: 7
    Dernier message: 30/11/2011, 11h51
  3. Problème avec une dll non chargé (ou presque)
    Par Veler dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 19/01/2010, 06h39
  4. Problème avec une fonction non static
    Par Coco4486 dans le forum C++
    Réponses: 17
    Dernier message: 09/05/2008, 11h49
  5. requete update qui pose problème
    Par kirian dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/02/2007, 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