2009-08-18 12 views
1

J'ai deux tables dans MySQL DB; table1, table2.Comment joindre les résultats de deux tables dans un fichier de sortie?

Les deux ont une seule valeur de colonne (flottante). C'est en fait une décharge de notre projet de recherche qui produit un résultat unique.

Et beaucoup de ces valeurs sont répétées et les trier et les filtrer en Python serait fastidieux, donc je pense que les déposer dans une table en DB serait peut-être plus rapide.

Ainsi, le résultat final de la requête SQL est la suivante regroupées par la valeur:

value table1_count table2_count 
1.0   0    1 
1.1   1    3 
2.1   4    5 

La requête que je viens avec est la suivante:

select everything.value, everything.count1, everything.count2 
from 
((
select X as value, count(*) from table1 
) union all (
select X as value, count (*) from table2 
)) everything 
group by everything.value 
into outfile "/count"; 

Toutes les suggestions?

Merci,

Répondre

1

Vous ne pouvez pas effectuer le compte par groupe dans les requêtes internes, puisque vous définissez les groupes dans la requête externe. Cela devrait être plus simple:

select everything.value, count(*) 
from 
(
    select X as value from table1 
    union all 
    select X from table2 
) everything 
group by value 
into outfile "/count"; 

est également ici quelques anecdotes: lorsque vous utilisez UNION, vous devez définir des alias de colonne que dans la première requête de filles fusionnées.


Re votre commentaire. Voici une solution:

select everything.value, sum(t = 'success') as s, sum(t = 'failure') as f 
from 
(
    select X as value, 'success' as t from table1 
    union all 
    select X, 'failure' from table2 
) everything 
group by value 
into outfile "/count"; 

Ceci utilise une astuce dans MySQL que les expressions booléennes retournent 0 pour faux ou 1 pour vrai. Donc, quand vous résumez un tas d'expressions, vous obtenez un compte des lignes où l'expression est vraie. (Ne comptez pas sur cette astuce dans d'autres marques de base de données SQL.)

+0

Merci Bill ... Mais il ne répond pas à ma question ... Dans votre réponse, vous avez un nombre externe qui est combiner le compte des tableaux 1 et 2; J'ai besoin de garder le compte séparé pour chaque table comme un représentent le succès et l'échec, de sorte qu'ils ne peuvent pas être combinés dans la requête externe .. Des suggestions? – okm

Questions connexes