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

MySQL Discussion :

[SOLVED] SELECT COUNT d'une table dans la table.


Sujet :

MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 155
    Points : 94
    Points
    94
    Par défaut [SOLVED] SELECT COUNT d'une table dans la table.
    Bonjour je ne comprends pas comment corriger ma requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE card SET card_location='DRAW', card_sublocation=(SELECT COUNT(*) FROM card as T1 WHERE T1.id< card.id )  WHERE card_location='DISCARD' and card_type='EQP'
    J'ai le message suivant:
    'You can't specify target table 'card' for update in FROM clause' ... mais je ne peux pas faire autrement si je veux compter?
    Le but est de mettre une valeur de 1 à count dans le sublocation.

  2. #2
    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 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Réessayez en ajoutant un alias dans votre requete principale, comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE card MAIN 
    SET card_location='DRAW' 
       ,card_sublocation=
            (SELECT COUNT(*) 
             FROM card as T1 
             WHERE T1.id< MAIN.id )  
    WHERE card_location='DISCARD' 
      and card_type='EQP'

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 155
    Points : 94
    Points
    94
    Par défaut
    Bonjour,
    ca n'a pas fonctionné, merci tout de même.
    J'ai trouvé par contre une solution différente qui tourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE card SET card_location='DRAW', card_sublocation=(SELECT COUNT(*) FROM (SELECT * FROM card) as T1 WHERE T1.id< card.id )  WHERE card_location='DISCARD' and card_type='EQP'
    apperemment une différence d'acceptation entre SQL et MySQL.
    On doit remplacer le nom de la table par un select de cette table.

  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 064
    Points
    19 064
    Par défaut
    Salut §Gama§.

    Si vous désirez mettre un incrément dans la colonne 'card_sublocation', il faut procéder ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE card, (select @a:=0) as x
    SET   card_location    = 'draw',
          card_sublocation = (@a := @a + 1)
    WHERE card_location    = 'DISCARD'
    AND   card_type        = 'EQP';
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 155
    Points : 94
    Points
    94
    Par défaut
    merci!!! Excellent! c'est beaucoup plus simple!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/01/2008, 09h54
  2. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 18h04
  3. Rendre visible ou non une ligne dans un Table
    Par pmboutteau dans le forum ASP
    Réponses: 6
    Dernier message: 10/11/2005, 16h09
  4. language SQL - Copier une ligne dans autre table
    Par fxd dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/10/2005, 18h16
  5. Effacer une ligne dans la table nat
    Par vbcasimir dans le forum Sécurité
    Réponses: 2
    Dernier message: 11/01/2004, 00h15

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