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 :

problème avec sous requete


Sujet :

Requêtes MySQL

  1. #1
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut problème avec sous requete
    Bonjour à tous,
    J'ai une question concernant mysql je cherche a faire une sous requete sur la clause SELECT.
    genre : SELECT ( SELECT nomDuChamp From TABLE) FROM TABLE2
    ou SELECT nomDuChamp From TABLE me donne le nom du champ à recuperer

    or ce la ne marche pas je suis sur mysql5 et me renvoi de facon recursif le resultat de la requete SELECT nomDuChamp From TABLE et non pas le resutat de la requete complete !
    quelqu'un aurait' il une idée??
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  2. #2
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Si j'ai bien compris, tu essayes de faire un truc dans ce style non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM TABLE2 t2, ( SELECT id FROM TABLE1) t1
    WHERE t1.id = t2.id
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  3. #3
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    sauf que je fait ma sous requete sur la clause SELECT. Ma sous requete me renvoi le nom du champ que je veux rechercher
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  4. #4
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    personne?
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  5. #5
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Tu veux récupérer quoi exactement comme resultat ? Sous quel forme ? Donne un exemple d'enregistrement que tu as sur les tables et quel resultat tu voudrais avoir
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  6. #6
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    Ok je vais vous donné un exemple :
    - j'ai ma table T1 qui contient un champs T1id et Lib
    -
    Cette table contient la valeur des champs de mon autre table :
    0 Valeur1
    1 valeur2
    2 valeur3
    .. ......
    - J'ai une seconde table T2 qui possède plusieur champs T2id valeur1 valeur2 valeur3 ....

    Ce que cherche à faire c'est de récupérer dans une 1ère requête la valeur du champs libre dans T1 par rapport à un T1id donné par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Lib FROM T1 WHERE T1id=1;
    une fois cette requête éxécuté je recupère donc la valeur valeur2

    La 2nde étape consiste donc a passé valeur2 en paramètre à ma seconde requête ce qui doit donc donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT valeur2 FROM T2 WHERE T2id=2;
    je veux faire tout ca en une seul requête, donc j'ai pensé faire une sous requête dans la clause SELECT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (SELECT Lib FROM T1 WHERE T1id=1) FROM T2 WHERE T2id=2;
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  7. #7
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Je t'avouerais que j'ai presque compris. En fait, c'est quand tu dis :
    une fois cette requête éxécuté je recupère donc la valeur valeur2
    Tu voulais pas dire : "ensuite" à la place de "donc" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (SELECT Lib FROM T1 WHERE T1id=1) FROM T2 WHERE T2id=2;
    La derniere requête n'est pas logique. Tu fais une requête sur T2 mais tu récupère rien de cette table.
    Alors est ce que c'est pas ça que tu veux faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM T2 WHERE T2id=(SELECT Lib FROM T1 WHERE T1id=1);
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  8. #8
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    je ne pense pas que ca soit possible en une seule requete ce que tu veux faire
    tu veux bien afficher certaines colonnes dont les noms sont défini dans une autre table?

  9. #9
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    Ok je recommence :
    partons de cette requete ( qui fonctionne tres bien sous oracle ou postgre je le precise! je n'ai pas été pecher ca n'importe ou !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT (SELECT Lib FROM T1 WHERE T1id=1) FROM T2 WHERE T2id=2;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Lib FROM T1 WHERE T1id=1
    cela me renvoi valeur2 on est d'accord la dessus !

    Dans ma table T2 j'ai un champ qui s'appel valeur2
    j'ai donc final la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT valeur2 FROM T2 WHERE T2id=2;
    ce qui me retourne le resultat contenu dans le champ valeur2 de la table T2
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  10. #10
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    tu veux bien afficher certaines colonnes dont les noms sont défini dans une autre table?
    exactement
    +1 Cybher
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  11. #11
    Membre averti Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Points : 332
    Points
    332
    Par défaut
    slt...

    je crois qu´il veut faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    select @A:= lib from t1 WHERE T1id=2;        // donne valeur2
    select @A from t2 where t2id=2;                 // redonne valeur2 :( 
    ca marche pas...  il ne transforme pas @A en valeur2, pour que ca reste select valeur2 ...

  12. #12
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Haaaa ok je comprend. En faite tu veux afficher

    Valeur2 étant le resultat récupérer de la première requete.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  13. #13
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Passe par une requête préparé et utilise execute peut être que ça peut marcher.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  14. #14
    Membre averti Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Points : 332
    Points
    332
    Par défaut
    slt....

    solution pas tres jolie


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT @a:= lib FROM t1 WHERE T1id=1;
    SET @s = CONCAT("SELECT ", @a, " FROM t2 where t2id=2 ");
    PREPARE stmt FROM @s;
    EXECUTE stmt;     // ca marche... tester sur mom pc :D
    DEALLOCATE PREPARE stmt;

  15. #15
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    Merci ca marche mais en effet pas très jolie
    Merci de vous etes penché sur le sujet ....
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  16. #16
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Citation Envoyé par jota5450 Voir le message
    slt....

    solution pas tres jolie


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT @a:= lib FROM t1 WHERE T1id=1;
    SET @s = CONCAT("SELECT ", @a, " FROM t2 where t2id=2 ");
    PREPARE stmt FROM @s;
    EXECUTE stmt;     // ca marche... tester sur mom pc :D
    DEALLOCATE PREPARE stmt;
    C'est cool, avec ça je pourrais faire ma requête pivot avec Mysql

    Si j'arrive à trouver un systeme générique je le poserais sur la FAQ ou astuce de Mysql en échange d'une contribution de 10 000$
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

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

Discussions similaires

  1. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39
  2. problème update avec sous requetes
    Par stoz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 16h44
  3. problème avec ma requete contenant un "in" :
    Par seb78000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/07/2005, 16h38
  4. INTERBASE: DELETE avec sous requete conditionnelle
    Par Papino dans le forum InterBase
    Réponses: 6
    Dernier message: 17/02/2005, 22h55
  5. Problème de sous-requete.
    Par Oberown dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2004, 16h44

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