2009-11-27 2 views
0

dans mysql, si j'ai une requête qui renvoie quelque chose commemysql - une certaine forme d'union nécessaire

b-2; c-4, E-9

est-il un moyen i pourrait unir à

A-0; b-0; c-0; d-0; e-0; f-0;

pour obtenir un résultat final

a0; b-2; c-4; d-0; e-9, f-0?

Je comprends que la meilleure façon de l'aborder est de réécrire la requête d'origine, mais c'est un peu complexe pour mon niveau (sql noob complet), et je suis plutôt pressé par le temps. merci

+0

Voyez si vous pouvez publier la requête pour nous. –

+0

Voulez-vous les ajouter ou choisir le plus haut? – Gausie

Répondre

0

Oui, vous pouvez joindre en interne les deux requêtes en tant que sous-requêtes, puis ajouter les comptages.

select 
    letter, 
    a.count + b.count as total 
from (
    select letter, count(*) 
    from blah blah lots of joins 
    group by letter 
) as a 
inner join (
    select letter, count(*) 
    from blah blah lots of joins 
    group by letter 
) as b 
on a.letter = b.letter 
+0

La première requête renvoie 'b-2; c-4, e-9', donc une jointure interne pourrait omettre la rangée 'a'? – Andomar

+0

Utilisez donc une jointure externe complète. –

0

Vous pouvez utiliser une union. La première partie de l'union a les lettres de la première requête, et la deuxième partie des lettres que la première partie ne contenait:

select * from query1 
union all 
select * from query2 b 
where not exists (select * from query1 a where a.letter = b.letter) 

Si la requête retourne le champ entier (a-0 au lieu de a), vous Je devais utiliser substring.

Questions connexes