sql >> Database teknologi >  >> RDS >> Mysql

MySQL Left Join Subselect

Der er muligvis en bedre måde at gøre dette på, og jeg har ikke testet det i MySQL, men følgende virker i SQL Server 2005:

Select a.language, b.template, count (c.template) as combo_count
from
(select distinct language from tablename) as a
inner join (select distinct template from tablename) as b on 1 < 2 /* this could be cross join, same thing. */
left outer join tablename c on c.language = a.language and c.template = b.template
group by a.language, b.template
order by 1, 2

Her er resultaterne med dine eksempeldata:

au  t1  0
au  t2  1
au  t3  0
en  t1  3
en  t2  0
en  t3  0
ge  t1  0
ge  t2  1
ge  t3  2


  1. Dimensioner af dimensioner:Et kig på Data Warehousings mest almindelige dimensionelle tabeltyper

  2. SQLSTATE[HY000] [1698] Adgang nægtet for brugeren 'root'@'localhost'

  3. hvorfor returnerer denne forespørgsel en række med nuller

  4. Hvordan sorteres efter tal først med Oracle SQL-forespørgsel?