, , , . , , headings . , WHERE , , WHERE .
SELECT headings.heading AS sub_category,
LEFT( headings.heading, 1 ) AS first_letter,
headings.url_code as url_code ,
letter_counts.letter_count
FROM headings ON a.Heading=headings.heading
INNER JOIN (
select left(h_all.heading,1) as the_letter,
count(*) as letter_count
from headings h_all
WHERE EXISTS ( select * from TOWN_TABLE t
where t.heading = h_all.heading
AND Category = 'Classified')
group by left(h_all.heading,1)
) as letter_counts on left(heading.heading,1) = letter_counts.the_letter
WHERE EXISTS ( select * from TOWN_TABLE t
where t.heading = headings.heading
AND Category = 'Classified')
order by headings.heading
SQL Server CTE, . , CTE mysql:
with sub_categories ( first_letter, sub_category )
as (
select left( h.heading, 1 )
, h.heading
from headings h
where exists( select * from TOWN_TABLE t
where t.heading = h_all.heading
and Category = 'Classified')
)
select sc.sub_category
, sc.first_letter
, sub_category_counts.the_count
from sub_categories sc
inner join (
select first_letter
, count(*) as the_count
from sub_categories
group by first_letter
) as sub_category_counts on sub_category_counts.first_letter = sc.first_letter
order by sc.sub_category