J'ai une requête SQL, ressemble à ceci:
select name, count (*) from Results group by name order by name
et un autre, identique qui se charge à partir d'une table de résultats d'archive, mais les champs sont les mêmes.
select name, count (*) from Archive_Results group by name order by name
Comment combiner les deux en une seule requête? (Ainsi, le groupe by fonctionnerait toujours correctement). J'ai essayé avec union all, mais cela ne fonctionnera pas. Qu'est-ce que je rate?
select tem.name, count(*)
from(select name from results
union all
select name from archive_results) as tem
group by name
order by name
Si vous avez des index de support et des nombres relativement élevés, quelque chose comme ça peut être considérablement plus rapide que les solutions suggérées:
SELECT name, MAX(Rcount) + MAX(Acount) as TotalCount
FROM (
SELECT name, count(*) as Rcount, 0 as Acount
FROM Results GROUP BY name
UNION ALL
SELECT name, 0, count(*)
FROM Archive_Results
GROUP BY name
) AS Both
GROUP BY name
ORDER BY name;
Est votre objectif ...
Results
sur une ligne et toutes les instances de "Bob Jones" dans Archive_Results
dans une ligne distincte?En supposant que c'est # 1, vous voudriez quelque chose comme ...
SELECT name, COUNT(*) FROM
(SELECT name FROM Results UNION ALL SELECT name FROM Archive_Results)
GROUP BY name
ORDER BY name