Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1565 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête MySQL avec UNION

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête MySQL avec UNION

n°1485596
Guitariff
Posté le 03-12-2006 à 13:57:49  profilanswer
 

Bonjour à tous,
 
Dans l'idée, ma requête SQL est la suivante :
 

Code :
  1. (SELECT artiste, sum(hit) AS hit FROM tabstxt GROUP BY artiste ORDER BY hit DESC LIMIT $limite)
  2. UNION
  3. (SELECT artiste, sum(hit) AS hit FROM tabsgp GROUP BY artiste ORDER BY hit DESC LIMIT $limite)
  4. GROUP BY artiste sum(hit) as hit ORDER BY hit DESC LIMIT $limite


 
 
Je souhaiterais donc qu'après que l'union ait été réalisé on groupe de nouveau par artiste puis qu'on récupère la somme des deux sum(hit) ...
 
Avez-vous une petite idée de la syntaxe d'une requête valide ?
 
Après avoir trainer sur quelques forum, on me propose (non fontionnel) :

Code :
  1. SELECT artiste, 1, sum(hit) AS hit FROM tabstxt
  2. GROUP BY artiste, 1
  3. UNION
  4. SELECT artiste, 2, sum(hit) AS hit FROM tabsgp
  5. GROUP BY artiste, 2
  6. UNION
  7. SELECT a.artiste, 3, sum(a.hit + b.hit) as hit FROM tabstxt a join tabsgp b on
  8. a.artiste = b.artiste
  9. GROUP BY a.artiste, 3
  10. ORDER BY a.artiste, 002 DESC


 
 
Merci de vos réponses.
 
 
Guitariff.

mood
Publicité
Posté le 03-12-2006 à 13:57:49  profilanswer
 

n°1485610
Beegee
Posté le 03-12-2006 à 14:21:48  profilanswer
 

Code :
  1. SELECT artiste, sum_tabstxt + sum_tabsgp
  2. FROM (SELECT artiste, sum(hit) as sum_tabstxt
  3.       FROM tabstxt
  4.       GROUP BY artiste
  5.       UNION ALL
  6.       SELECT artiste, sum(hit) as sum_tabsgp
  7.       FROM tabsgp
  8.       GROUP BY artiste)
  9. GROUP BY artiste
  10. ORDER BY artiste;

n°1485620
Guitariff
Posté le 03-12-2006 à 14:53:59  profilanswer
 

Merci de ta réponse. J'ai malheureusement l'erreur suivante : Every derived table must have its own alias.
 
As-tu une petite idée de la solution ?

n°1485631
Beegee
Posté le 03-12-2006 à 15:34:05  profilanswer
 

Essaye comme ça :
 

Code :
  1. SELECT sub.artiste, sub.sum_tabstxt + sub.sum_tabsgp
  2. FROM (SELECT artiste, sum(hit) as sum_tabstxt
  3.       FROM tabstxt
  4.       GROUP BY artiste
  5.       UNION ALL
  6.       SELECT artiste, sum(hit) as sum_tabsgp
  7.       FROM tabsgp
  8.       GROUP BY artiste) as sub
  9. GROUP BY artiste
  10. ORDER BY artiste;

n°1485639
Guitariff
Posté le 03-12-2006 à 15:55:03  profilanswer
 

Encore une erreur ...
#1054 - Unknown column 'sub.sum_tabsgp' in 'field list'  
 
Merci du temps que tu passes en tt cas.

n°1485646
Beegee
Posté le 03-12-2006 à 16:25:56  profilanswer
 

Désolé, j'ai pas de base sous la main ...
 
Mais essaye ça :
 

Code :
  1. SELECT sub.artiste, sum(sub.sum_tabs)
  2. FROM (SELECT artiste, sum(hit) as sum_tabs
  3.       FROM tabstxt
  4.       GROUP BY artiste
  5.       UNION ALL
  6.       SELECT artiste, sum(hit) as sum_tabs
  7.       FROM tabsgp
  8.       GROUP BY artiste) as sub
  9. GROUP BY artiste
  10. ORDER BY artiste;

n°1485647
Beegee
Posté le 03-12-2006 à 16:27:31  profilanswer
 

Ou encore, plus simplement :
 

Code :
  1. SELECT sub.artiste, sum(sub.hit)
  2. FROM (SELECT artiste, hit
  3.       FROM tabstxt
  4.       UNION ALL
  5.       SELECT artiste, hit
  6.       FROM tabsgp) as sub
  7. GROUP BY artiste
  8. ORDER BY artiste;

n°1485653
Guitariff
Posté le 03-12-2006 à 16:53:55  profilanswer
 

<code>
  SELECT sub.artiste, sum( sub.hit ) AS hit2
  FROM (
   SELECT artiste, hit
   FROM tabstxt
   UNION ALL
   SELECT artiste, hit
   FROM tabsgp
  ) AS sub
   
  GROUP BY artiste
  ORDER BY hit2 DESC
  LIMIT $limite
</code>
 
fonctionne parfaitement.
 
Merci beaucoup Beegee !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête MySQL avec UNION

 

Sujets relatifs
mysql - recuperer l'espace non utilisé de la baserequete assez tordu
récupérer checklist pour insert mysqlMéthode de Connexion MySQL
Mysql : requete avec EXISTS[MySQL] Problème avec requête et condition IN
[PHP/MySql] [Resolu merci !]Insertion de données temporaire.[MySQL] Limiter la taille du processus mySQL
[MySQL] Tri sur la premiere requete avec union 
Plus de sujets relatifs à : Requête MySQL avec UNION


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR