I too find the taxa tables taxing. I wrote this query a few years ago. At the time I think I understood it but I'm not hugely confident right now without investing a few hours in a quiet room with it. Give it a whirl and let me know if this works for you (or if it doesn't)
SELECT
[INDEX_TAXON_NAME].[TAXON_LIST_ITEM_KEY] AS "taxon_key"
,[INDEX_TAXON_NAME].[RECOMMENDED_TAXON_LIST_ITEM_KEY] AS "preferred_taxon_key"
,CASE
WHEN [INDEX_TAXON_NAME].[TAXON_LIST_ITEM_KEY] = [INDEX_TAXON_NAME].[RECOMMENDED_TAXON_LIST_ITEM_KEY] THEN '1' ELSE '0'
END AS "is_preferred_name"
,[TAXON_GROUP].[TAXON_GROUP_NAME] AS "taxon_group"
,[INDEX_TAXON_NAME].[ACTUAL_NAME] AS "mixed_names"
,[INDEX_TAXON_NAME].[COMMON_NAME] AS "preferred_common_name"
,[INDEX_TAXON_NAME].[PREFERRED_NAME] AS "preferred_scientific_name"
,CASE
WHEN [INDEX_TAXON_NAME].[ABBREVIATION] IS NULL THEN '' ELSE [INDEX_TAXON_NAME].[ABBREVIATION]
END AS "abbreviations"
,[TAXON_RANK].[LONG_NAME] AS "taxon_rank"
,CASE
WHEN [INDEX_TAXON_NAME].[PREFERRED_NAME_AUTHORITY] IS NULL THEN '' ELSE [INDEX_TAXON_NAME].[PREFERRED_NAME_AUTHORITY]
END AS "authority"
,CASE
WHEN [TAXON_LIST_ITEM].[PARENT] IS NULL THEN '' ELSE [TAXON_LIST_ITEM].[PARENT]
END AS "parent_taxon_key"
,COUNT( [TAXON_DETERMINATION].[TAXON_DETERMINATION_KEY] ) AS "records_count"
,[INDEX_TAXON_NAME].[SORT_ORDER] AS "sort_order"
,[LANG_TAXON].[LANGUAGE] AS "language"
FROM
[INDEX_TAXON_NAME]
LEFT JOIN [TAXON_LIST_ITEM] ON [INDEX_TAXON_NAME].[RECOMMENDED_TAXON_LIST_ITEM_KEY] = [TAXON_LIST_ITEM].[TAXON_LIST_ITEM_KEY]
LEFT JOIN [TAXON_RANK] ON [TAXON_LIST_ITEM].[TAXON_RANK_KEY] = [TAXON_RANK].[TAXON_RANK_KEY]
LEFT JOIN [TAXON_VERSION] ON [TAXON_LIST_ITEM].[TAXON_VERSION_KEY] = [TAXON_VERSION].[TAXON_VERSION_KEY]
LEFT JOIN [TAXON_GROUP] ON [TAXON_VERSION].[OUTPUT_GROUP_KEY] = [TAXON_GROUP].[TAXON_GROUP_KEY]
LEFT JOIN [TAXON_DETERMINATION] ON [INDEX_TAXON_NAME].[TAXON_LIST_ITEM_KEY] = [TAXON_DETERMINATION].[TAXON_LIST_ITEM_KEY]
/* EXTRA BIT FOR OBTAINING THE LANGUAGE */
LEFT JOIN [TAXON_LIST_ITEM] AS [LANG_TAXON_LIST_ITEM] ON [INDEX_TAXON_NAME].[TAXON_LIST_ITEM_KEY] = [LANG_TAXON_LIST_ITEM].[TAXON_LIST_ITEM_KEY]
LEFT JOIN [TAXON_VERSION] AS [LANG_TAXON_VERSION] ON [LANG_TAXON_LIST_ITEM].[TAXON_VERSION_KEY] = [LANG_TAXON_VERSION].[TAXON_VERSION_KEY]
LEFT JOIN [TAXON] AS [LANG_TAXON] ON [LANG_TAXON_VERSION].[TAXON_KEY] = [LANG_TAXON].[TAXON_KEY]
/* RETURN ONLY LATIN AND ENGLISH NAMES - reduces names from 580,676 rows to 564090 */
WHERE
[LANG_TAXON].[LANGUAGE] = 'la' OR [LANG_TAXON].[LANGUAGE] = 'en'
GROUP BY
[INDEX_TAXON_NAME].[TAXON_LIST_ITEM_KEY]
,[INDEX_TAXON_NAME].[RECOMMENDED_TAXON_LIST_ITEM_KEY]
,[INDEX_TAXON_NAME].[TAXON_LIST_ITEM_KEY]
,[TAXON_GROUP].[TAXON_GROUP_NAME]
,[INDEX_TAXON_NAME].[ACTUAL_NAME]
,[INDEX_TAXON_NAME].[COMMON_NAME]
,[INDEX_TAXON_NAME].[PREFERRED_NAME]
,[INDEX_TAXON_NAME].[ABBREVIATION]
,[TAXON_RANK].[LONG_NAME]
,[INDEX_TAXON_NAME].[PREFERRED_NAME_AUTHORITY]
,[TAXON_LIST_ITEM].[PARENT]
,[INDEX_TAXON_NAME].[SORT_ORDER]
,[LANG_TAXON].[LANGUAGE]
ORDER BY
[TAXON_GROUP].[TAXON_GROUP_NAME]
,[INDEX_TAXON_NAME].[COMMON_NAME]
,[INDEX_TAXON_NAME].[PREFERRED_NAME]