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 :

PB : Requête utilisant un CONCAT dans le from


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut PB : Requête utilisant un CONCAT dans le from
    Salut,

    Je veux faire la requête suivante select * from test_23 sachant que le nom de la table test_23 est la concaténation de la chaîne 'test_' et le nombre 23 résultat d'une autre requête select.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM  CONCAT('test_',select id from tabletest where name='kb');
    ceci ne marche pas , Mysql n'accepte pas de faire de CONCAT dans le from.

    SVP comment faire cette requête.

    Merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut
    J'ai pu résoudre le pb par la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT  CONCAT('test_',id ) 
    FROM tabletest 
    WHERE name='kb';

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut
    je veux maintenat faire la requete suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT id
    FROM  
    (SELECT  CONCAT('test_',id ) 
    FROM tabletest 
    WHERE name='kb') AS t1;
    MySQL m'affiche l'erreur suivante:

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near 'SELECT id
    FROM
    (select CONCAT('test_' at line 3

  4. #4
    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
    La discussion est marquée
    Ça l'est ?

    Pourquoi vouloir faire des tables multiples test_x ?

    Peut-être faudrait-il déjà commencer par revoir la structure de la BDD ?
    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 !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut
    Merci pour votre réponse
    on fait c été résolut pour le 1erer cas or maintenant je veux faire une requête sur la table test_21 tel que 21 et un id qu'on récupère d'une autre requête puis je le concatène avec la chaîne de caractère "test"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     SELECT champ1, champ2
      FROM 
        (
          SELECT CONCAT('test_',entriesid) 
          FROM tabletest
          WHERE name = 'kb' 
          AND id = 3125
          )AS tbl;
    Ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     SELECT tbl.champ1, tbl.champ2
      FROM 
        (
          SELECT CONCAT('test_',entriesid) 
          FROM tabletest
          WHERE name = 'kb' 
          AND id = 3125
          )AS tbl;
    Les 2 cas cela ne marche pas or ca marche uniquement pour les opèration count(*)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     SELECT max(tbl.nr)
      FROM 
        (
          SELECT CONCAT('test_',entriesid) , count(*) as nr
          FROM tabletest
          WHERE name = 'kb' 
          AND id = 3125
          )AS tbl;

  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
    Bis repetita :
    Citation Envoyé par CinePhil
    Pourquoi vouloir faire des tables multiples test_x ?

    Peut-être faudrait-il déjà commencer par revoir la structure de la BDD ?
    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
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 43
    Points
    43
    Par défaut
    C'est que la BDD est constituée ainsi je veux juste faire un script ca marche pour Oracle mais ca bloque pour Mysql la requête dont je veux utiliser c'est que j'en ai besoin pour faire des curseur car j'ai pu faire la requête utilisant des variable maintenant je veux une requête select afin de faire cursor for select ... from test_21

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT champ1, champ2
      FROM 
        (
          SELECT CONCAT('test_',entriesid) 
          FROM tabletest
          WHERE name = 'kb' 
          AND id = 3125
          )AS tbl;

Discussions similaires

  1. utiliser un controle dans une Requête
    Par issam16 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/06/2006, 11h06
  2. Utiliser une constante dans une requête
    Par Nabouille dans le forum Access
    Réponses: 4
    Dernier message: 19/04/2006, 13h09
  3. [MySQL] Utilisation du caractère "`" dans les requêtes
    Par PeZ dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/03/2006, 16h01
  4. Réponses: 4
    Dernier message: 16/02/2006, 16h28
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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