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 :

Deux requetes pour le prix d'une


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Deux requetes pour le prix d'une
    Bonjour,
    je suis tombé récemment sur un article ventant les mérites des procédure stockées introduites par MySQL 5 et j'ai donc décidé de migrer une partie de la logique de l'application PHP vers MySQL. Et forcement, ce n'est que maintenant que je me rend compte que je n'y connais rien en MySQL...

    Voici donc mon probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      select name,path,'dir' as mime from ftp.dirs where pid=v_id 
    union
       select name,path,ext as mime from z.f where did=v_id and fid=0 
    order by name;
    Cette requete fonctionne mais le tri se fait sur le resultat globale et je ne trouve pas le moyen pour que le tri se fasse sur les deux requetes separemment. J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       select name,path,'dir' as mime from ftp.dirs where pid=v_id  order by name 
    union 
       select name,path,ext as mime from z.f where did=v_id and fid=0 order by name;
    et j'ai été gratifié d'un joli Incorrect usage of UNION and ODER BY. J'ai aussi pensé à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      select name,path,'dir' as mime from ftp.dirs where pid=v_id order by name;
    select name,path,ext as mime from z.f where did=v_id and fid=0 order by name;
    mais j'obtiens alors en sortie deux résultats séparés... J'ai aussi pensé a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from 
    (select name,path,'dir' as mime from ftp.dirs where pid=v_id  order by name) as dirs,
    (select name,path,ext as mime from z.f where did=v_id and fid=0 order by name) as files
    mais dans ce cas j'obtiens tous les résultat de la seconde requête en double et aucun de la première. Enfin j'ai cherché à enregistrer les deux requêtes sur des pointeurs (cursor in English in the text) pour stocker le résultat dans une table MEMORY et ensuite opérer un select sur celle-ci mais il semble que les pointeurs doivent être déclaré avant toute instruction et je n'ai pas la valeur de v_id pour le select dans ce cas.

    J'espère avoir été clair sur mon problème, ne pas être passer a coté de quelques choses pendant la lecture du manuel MySQL et que vous aurez des idées pour résoudre ce problème.

    Cordialement,
    ramy.

  2. #2
    Membre éclairé Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Points : 690
    Points
    690
    Par défaut
    Citation Envoyé par rramy Voir le message
    Voici donc mon probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      select name,path,'dir' as mime from ftp.dirs where pid=v_id 
    union
       select name,path,ext as mime from z.f where did=v_id and fid=0 
    order by name;
    Cette requete fonctionne mais le tri se fait sur le resultat globale et je ne trouve pas le moyen pour que le tri se fasse sur les deux requetes separemment.
    Je pense que cela devrais passer mais on ajout une colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT 'r1' as req, name,path,'dir' AS mime FROM ftp.dirs WHERE pid=v_id 
    union
       SELECT 'r2' as req name,path,ext AS mime FROM z.f WHERE did=v_id AND fid=0 
    ORDER BY req, name;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Fallait y penser

    Merci
    Probleme résolu :d

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

Discussions similaires

  1. Windows 7 : deux versions OEM pour le prix d'une boite
    Par Gordon Fowler dans le forum Windows
    Réponses: 5
    Dernier message: 30/09/2009, 10h48
  2. Windows 7 : deux versions OEM pour le prix d'une boite
    Par Gordon Fowler dans le forum Actualités
    Réponses: 5
    Dernier message: 30/09/2009, 10h48
  3. Regrouper deux requetes pour faire une vue
    Par shaun_the_sheep dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/04/2009, 18h38
  4. regrouper deux cellules pour ne faire qu'une.
    Par vinssieux dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/05/2008, 14h52
  5. requete pour les colonnes d'une table
    Par bassoum dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/05/2008, 10h30

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