Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2011, 00h52   #1
Membre à l'essai
 
Inscription : juin 2006
Messages : 58
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 23
Points : 23
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 :
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.
koukoya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 09h38   #2
Membre à l'essai
 
Inscription : juin 2006
Messages : 58
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 23
Points : 23
J'ai pu résoudre le pb par la requête suivante:
Code :
1
2
3
SELECT  CONCAT('test_',id ) 
FROM tabletest 
WHERE name='kb';
koukoya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 10h06   #3
Membre à l'essai
 
Inscription : juin 2006
Messages : 58
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 23
Points : 23
je veux maintenat faire la requete suivante

Code :
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
koukoya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 14h27   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 985
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 985
Points : 18 232
Points : 18 232
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 14h59   #5
Membre à l'essai
 
Inscription : juin 2006
Messages : 58
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 23
Points : 23
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 :
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 :
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 :
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;
koukoya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 15h58   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 985
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 985
Points : 18 232
Points : 18 232
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 16h08   #7
Membre à l'essai
 
Inscription : juin 2006
Messages : 58
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2006
Messages : 58
Points : 23
Points : 23
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 :
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;
koukoya est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h39.


 
 
 
 
Partenaires

Hébergement Web