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 :

Probleme sur le tri d'un UNION


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Probleme sur le tri d'un UNION
    Bonjour à tous.

    Je tente de réaliser une requête assez chargée, mais je ne comprends pas où j'ai le bug :
    Je vais la détailler pour plus de compréhension :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT F.idFiche, F.date, M.idMembre, M.prenom, M.nom, F.age, F.sexe, CLASSE.niveau, CLASSE.nom AS nomClasse, COM.nbCom, COM.lastUpdate FROM l3gr3web_fiches F, l3gr3web_membres M, l3gr3web_classes CLASSE, (SELECT COMD.idFiche, COUNT(COMD.date) as nbCom, MAX(COMD.date) AS lastUpdate FROM l3gr3web_commentaires COMD GROUP BY idFiche) COM WHERE F.idMembre = M.idMembre AND F.idClasse = CLASSE.idClasse AND F.idFiche = COM.idFiche
    Je selectionne les différentes colonnes indiquées. Jusque là, rien de bien difficile. Seulement, une fiche (l3gr3_fiches) n'a pas forcément de commentaire (l3gr3_commentaires). Donc j'ai dut simuler une jointure complète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT F.idFiche, F.date, M.idMembre, M.prenom, M.nom, F.age, F.sexe, CLASSE.niveau, CLASSE.nom AS nomClasse, "0" AS nbCom, F.date AS lastUpdate FROM l3gr3web_fiches F, l3gr3web_membres M, l3gr3web_classes CLASSE WHERE F.idMembre = M.idMembre AND F.idClasse = CLASSE.idClasse AND F.idFiche NOT IN (SELECT DISTINCT idFiche FROM l3gr3web_commentaires)
    Ensuite, je réalise un UNION sur ces deux requetes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT F.idFiche, F.date, M.idMembre, M.prenom, M.nom, F.age, F.sexe, CLASSE.niveau, CLASSE.nom AS nomClasse, COM.nbCom, COM.lastUpdate FROM l3gr3web_fiches F, l3gr3web_membres M, l3gr3web_classes CLASSE, (SELECT COMD.idFiche, COUNT(COMD.date) as nbCom, MAX(COMD.date) AS lastUpdate FROM l3gr3web_commentaires COMD GROUP BY idFiche) COM WHERE F.idMembre = M.idMembre AND F.idClasse = CLASSE.idClasse AND F.idFiche = COM.idFiche ) UNION ( SELECT F.idFiche, F.date, M.idMembre, M.prenom, M.nom, F.age, F.sexe, CLASSE.niveau, CLASSE.nom AS nomClasse, "0" AS nbCom, F.date AS lastUpdate FROM l3gr3web_fiches F, l3gr3web_membres M, l3gr3web_classes CLASSE WHERE F.idMembre = M.idMembre AND F.idClasse = CLASSE.idClasse AND F.idFiche NOT IN (SELECT DISTINCT idFiche FROM l3gr3web_commentaires) );
    Jusque là, tout va bien, la requête marche comme il faut. Cependant, afin de trier les résultats et d'en prendre qu'une partie, j'imbrique le tout dans un "super" select et fait un order by dessus ainsi qu'un LIMIT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT R.* FROM ( SELECT F.idFiche, F.date, M.idMembre, M.prenom, M.nom, F.age, F.sexe, CLASSE.niveau, CLASSE.nom AS nomClasse, COM.nbCom, COM.lastUpdate FROM l3gr3web_fiches F, l3gr3web_membres M, l3gr3web_classes CLASSE, (SELECT COMD.idFiche, COUNT(COMD.date) as nbCom, MAX(COMD.date) AS lastUpdate FROM l3gr3web_commentaires COMD GROUP BY idFiche) COM WHERE F.idMembre = M.idMembre AND F.idClasse = CLASSE.idClasse AND F.idFiche = COM.idFiche ) UNION ( SELECT F.idFiche, F.date, M.idMembre, M.prenom, M.nom, F.age, F.sexe, CLASSE.niveau, CLASSE.nom AS nomClasse, "0" AS nbCom, F.date AS lastUpdate FROM l3gr3web_fiches F, l3gr3web_membres M, l3gr3web_classes CLASSE WHERE F.idMembre = M.idMembre AND F.idClasse = CLASSE.idClasse AND F.idFiche NOT IN (SELECT DISTINCT idFiche FROM l3gr3web_commentaires) ) R ORDER BY R.nom asc LIMIT 0, 10;
    Seulement, Mysql me répond cela :
    Erreur 1248 : Every derived table must have its own alias
    Alors là, je sèche un peu...

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Points : 39
    Points
    39
    Par défaut
    as tu bêtement tenté de faire ce qu'il te demande, c'est à dire d'attribuer un alias à la seule table que tu appelle et qui n'en a pas, à savoir
    l3gr3web_commentaires

    Mais bon, peu de chances que ça marche vu que la ligne précédente ne renvoyait pas d'erreur.

    Une simple suggestion, donc.

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/07/2013, 12h06
  2. Probleme sur les unions
    Par stardeus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/02/2013, 17h15
  3. Probleme sur un tri
    Par mastamx dans le forum Hibernate
    Réponses: 6
    Dernier message: 11/12/2007, 15h43
  4. Réponses: 3
    Dernier message: 07/04/2003, 20h06
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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