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 :

Requete imbriquée, oui mais...


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut Requete imbriquée, oui mais...
    Bonjour

    Désolé je vais faire un peu lourdot... je sais que des reponses ont été mises ici meme concernant les problemes de requetes imbriquées mais je ne comprend toujours pas.
    Je plante le décors :

    Sur un site en PHP avec un serveur Mysql < 4.1 (donc pas de requete imbriquée autorisée. JE dois faire une requete imbriquée... PAs de bol

    D'apres tout ce que j'ai lu, il faut faire deux requetes pour que ça marche, ca ne me pose pas de probleme sauf une chose : Comment faire une requete sur le resultat d'une premiere requete ? J'ai bien essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = mysql query("select id,titre,auteur,date,vus,reference from forum_messages where reference is not NULL order by date desc");
    $result2 = mysql query("select * from '$result' group by reference");
    Mais ça ne fonctionne pas...

    Pourriez vous me donner un petit coup de pouce svp ?

    PS : pour les modos, au cas où, désolé si je ne suis pas dans le bon forum mais comme c'est un probleme à cheval entre php et mysql c'est délicat ^^ mais j'ai vu que vous aviez deja deplacé un sujet similaire ici donc je pense que je suis là ou il faut

    Merci d'avance !
    @++

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Je me trompe peut-être mais tu fais un FROM sur une sélection et pas sur une table et ta première requête peut te renvoyer plusieurs lignes donc il faut que tu utilises mysql_fetch_row et que tu parcoures toutes les lignes.
    Le prob doit venir de la je pense.[/code]

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Si tel est le cas je suis mal barré....
    Imagines comment je devrais faire pour realiser une requete imbriquée sachant que les resultats sont des resultats sur plusieurs lignes...
    Je ne pourrais pas m'amuser à faire ligne par ligne... Et dans ce cas là je devrais tout coder en php.. Non là il doit y avoir un moyen de tout faire en sql mais comment ??? tres bonne question...

    Merci quand meme

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 208
    Points : 218
    Points
    218
    Par défaut
    Bonjour,

    Voilà comment récupérer des données en bash via MySQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SQL="$CMD_MYSQL -e \"select REPLACE(nom,' ','%') SU from personne where role='superUtilisateur'\""
    RES=`eval $SQL`
    RES=($RES)
     
    nomSU=${RES[1]}
    Dans cet exemple (un extrait de patch de mise à jour) je récupère le nom du super utilisateur d'une application.
    $CMD_MYSQL c'est juste le chemin absolu pour la commande mysql.
    Observe juste comment j'utilise RES pour avoir une liste résultat.
    ATTENTION: je remplace les espaces par % pour éviter des cafoulilages dans les résultats MySQL !

    un autre exemple pour le parcours (RES contient d'autres données... des noms d'équipes) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for ((i=1; i < ${#RES[@]}; ++i));do
        equipe=${RES[$i]}
        echo $equipe | tr "%" " "
        equipesM[${#equipesM[*]}]=$equipe
    done
    Attention les espaces doivent être correctement restitués ! (voir le echo)
    equipesM est une copie de RES que je construit au fur et à mesure.

    Voilà... c'est plus rapide que de se mettre au PHP. Les scripts c'est fait pour ça. J'espère juste que tu es sous Linux. Mais vu la tronche de ton avatar tu dois aimer Suse Linux :pingoin:


    [edit]
    P.S: c'est du bash ton code dans le premier post ?
    si c'est le cas il faut absolument enlever les espaces de part et d'autre de l'opérateur d'affectation
    [/edit]


    [edit]
    toujours dans le premier post cher ami...
    c'est un code bidon d'exemple ? dans le cas contraire rien n'empêche de mettre le "group by reference" à la fin de la première requête ! Mmmh ?
    [/edit]

  5. #5
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Il y a aussi la solution de mettre les résultats de la première requête dans une table temporaire.

    Cf la : http://mysql.developpez.com/faq/?pag..._sous_requetes

    Au fait, peut-être que ta requête n'est qu'un exemple, mais je ne vois pas l'intérêt de faire une deuxième requête alors que tu aurais pu mettre le GROUP BY directement dans la première

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Salut !

    Alors chat hotplug : déja probleme : ce n'est pas du bash... C'est pour du php chez Free sur leur sgbd
    Pour ce qui est du group by, je me suis planté dans la requete ^^
    En fait je veux qu'il me trie le resultat du group by par ordre desc de date. Mais uniquement le resultat du group by.

    ps : non je suis plutot windows ^^ j'ai bien essayé linux plein de fois mais je galere trop et pour le moment c'est pas ma priorité ^^

    Maximilian : Merci pour ta reponse je crois que j'ai trouvé mon bonheur !
    Je teste ca de suite et je vous tiens au courant !

    Merci a vous deux !
    @++

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    En fait j'ai bien reflechi à la solution que tu as proposé, les soucis :

    Imagines que plusieurs personnes font cette requete imbriquée en meme temps... Il risque d'y avoir un pb avec la table temporaire...
    De plus, ça pourrait bien bouffer en processus je pense... si y'a gros traitement, ce qui pourrait etre le cas.
    Je crois que je vais attendre que Free passe ses serveurs en 4.1... en plus c'est pour un truc pas ultra primordial !

    en tout cas merci quand meme, ça me laisse une idée en tete qui pourrait me servir !

    @++

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

Discussions similaires

  1. Requete qui reprend les champs d'un formulaire, oui, mais pas tous
    Par Arttt dans le forum Requêtes et SQL.
    Réponses: 20
    Dernier message: 23/06/2008, 16h14
  2. Equivalent d'une requete imbriquée ??
    Par webtheque dans le forum Requêtes
    Réponses: 8
    Dernier message: 31/08/2004, 10h07
  3. [APPLET-SERVLET] download oui mais upload non ...
    Par meufeu dans le forum Applets
    Réponses: 7
    Dernier message: 09/08/2004, 14h36
  4. Requetes imbriquées et jointures
    Par Emile Le Tueur* dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/03/2004, 23h12
  5. Requete imbriquée sur Firebird ou Interbase
    Par Thib dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/03/2004, 09h00

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