[MySQL] UNION spéciale :)

UNION spéciale :) [MySQL] - SQL/NoSQL - Programmation

Marsh Posté le 21-09-2006 à 15:28:55    

Bonjour,
 
Je voudrais faire une UNION entre 2 tables mais un peu spéciale, je m'explique :
 
SELECT id,champ1 FROM table1 WHERE condition=1  
UNION
SELECT id,champ2 FROM table2 WHERE condition=2
 
Mais en plus de cela, avoir un GROUP BY id (qui permettrait de compter les répétitions) ORDER BY champ1
 
Pour avoir au final :
count(id) | champ1
1 | blabla
1 | bloblo
5 | blibli
2 | bleble
 
Est-ce que ca se fait ?
Merci !


Message édité par zecoke le 21-09-2006 à 15:29:56
Reply

Marsh Posté le 21-09-2006 à 15:28:55   

Reply

Marsh Posté le 21-09-2006 à 15:30:33    

select ...
from (
  select ... from ...
  union
  select ... from ...
)
group by ...
order by ...
 
d'autres questions ? :)

Reply

Marsh Posté le 21-09-2006 à 15:37:30    

Bah là :
 
SELECT id, tag
FROM (
SELECT count( id ) , tag FROM tags
UNION SELECT count( id_membre ) , style FROM membres
)
GROUP BY id
ORDER BY tag
 
Ca marche pas  :heink:

Reply

Marsh Posté le 21-09-2006 à 15:54:32    

poste au moins ton essage d'erreur, on n'est pas devins
 
d'ailleurs le "count(id)" si tu le renomme pas, mysql sais pas d'où tu cherche le "id" dans le selected externe.
idem pour le tag, d'autant qu'il s'appelle deux fois différement.


Message édité par MagicBuzz le 21-09-2006 à 15:54:47
Reply

Marsh Posté le 21-09-2006 à 16:31:53    

Ouép j'avais oublié de poster l'erreur  :o  
 
SELECT nb, tag
FROM (
SELECT count( id ) as nb , tag FROM tags
UNION SELECT count( id_membre ) as nb , style FROM membres
)
GROUP BY nb
ORDER BY tag  
 
#1248 - Every derived table must have its own alias
 
Toujours la même erreur avec ou sans les "AS"

Reply

Marsh Posté le 21-09-2006 à 16:53:26    

SELECT nb, tag
FROM (
SELECT count( id ) as nb, tag FROM tags
UNION SELECT count( id_membre ) as nb, style as tag FROM membres
)
GROUP BY nb
ORDER BY tag

Reply

Marsh Posté le 21-09-2006 à 16:57:12    

Non plus, et même erreur...

Reply

Marsh Posté le 21-09-2006 à 16:59:39    

après la ) met "as tmp"

Reply

Marsh Posté le 21-09-2006 à 16:59:50    

avant le group by je veux dire

Reply

Marsh Posté le 21-09-2006 à 17:00:42    

ps : et un message d'erreur, c'est pas :
1/ fait pour être ignoré
2/ pour être copier/collé sans chercher à comprendre
 
le message est hyper explicite.
et le numéro d'erreur est documenté dans la doc officielle, avec des exemple en plus

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed