Связи в запросе SELECT

select * from City, Country
where Country.Capital=City.ID
select Country.Name,City.Name from City, Country
where Country.Capital=City.ID
select C.Name,Ci.Name from City Ci, Country C
where C.Capital=Ci.ID

Соединение по равенству

SELECT Country.Name AS Riik, City.Name AS Pealinn
FROM Country INNER JOIN City
ON Country.Capital = City.ID
SELECT C.Name AS Riik, Ci.Name AS Pealinn
FROM Country C INNER JOIN City Ci
ON C.Capital = Ci.ID
SELECT C.Name AS Riik, Ci.CityName AS Pealinn
FROM Country AS C LEFT JOIN City AS Ci
ON C.Capital = Ci.ID; 
SELECT C.Name AS Riik, Ci.CityName AS Pealinn
FROM Country AS C RIGHT JOIN City AS Ci
ON C.Capital = Ci.ID; 

Упражнения

  1. Покажите названия стран континента Европа, их столицы, количество населения проживающего в столице, отсортированные в порядке убывания населения
    1. учитывая только страны, имеющие столицу (см.ответ)
    2. учитывая все страны (см.ответ)
  2. Покажите страны, в которых название страны и название столицы совпадают (см.ответ)
  3. Найдите города, которые имеют одинаковые названия и находятся в одной стране. (см.ответ)
  4. Покажите, количество языков, на которых говорят в каждой стране (назывние страны, контитент, количество языков). Отсоритуйте результат по этому количеству. (см.ответ)
  5. Покажите, количество официальных языков в каждой стране (назывние страны, контитент, количество официальных языков). Отсоритуйте результат по этому количеству. (см.ответ)
  6. Покажите, на каких языках в каком количестве разговаривает население Азии. (см.ответ)
  7. Найдите для каждой страны какой процент (округлить до одного десятичного знака) от населения страны приходится на население столицы.
    1. учитывая только страны, имеющие столицу (см.ответ)
    2. учитывая все страны (см.ответ)
  8. Найдите общее, ссумарное количество человек, говорящих на каждом из языков, представленных в базе данных (см.ответ)
  9. Найдите общее, ссумарное количество человек для стран Европы, говорящих на каждом из языков, представленных в базе данных. (см.ответ)
  10. Вывести полную информацию обо всех странах, представленных в базе данных – название, континент, год обретения независимости, площадь, население, форма правления, столица, офицальный язык (языки) (см.ответ)

select C.Name as Riik,Ci.Name as Pealinn,Ci.Population as Pealinna_Elanikke_arv
from City Ci, Country C
where C.Capital=Ci.ID
order by Ci.Population desc

select Ci.Name as Linn,Ci.District as Maakond,C.Name as riik 
from City as Ci left join Country as C on
C.Capital=Ci.ID

´

select C.Name,Ci.Name from City Ci, Country C
where C.Name=Ci.name;
SELECT A.ID, A.Name, A.CountryCode
FROM City as A, City As B,Country as C
WHERE A.CountryCode = C.Code and B.CountryCode = C.Code and A.Name = B.Name and A.ID <> B.ID
ORDER BY A.Name;
select C.Name as Riik,C.Continent as Kontinent,COUNT(Cl.Language) as Keelte_Arv
from Country as C,CountryLanguage as Cl
where Cl.CountryCode=C.code
group by C.Name,C.Continent
order by COUNT(Cl.Language) desc

select C.Name as Riik,C.Continent as Kontinent,COUNT(Cl.IsOfficial) as Keelte_Arv
from Country as C,CountryLanguage as Cl
where Cl.CountryCode=C.code and Cl.IsOfficial=1
group by C.Name,C.Continent
order by COUNT(Cl.IsOfficial) desc

select C.Name as Riik,Cl.Language as Keel,(Cl.Percentage*C.Population) as Inimeste_Arv
from Country as C inner join CountryLanguage as Cl
on Cl.CountryCode=C.code
where C.Continent='Asia' 

select C.Name,C.Population as RiigiElanikud,Ci.Name as Pealinn,Ci.Population as LinnaElanikud,(cast(Ci.Population as decimal(28))  / cast(C.Population as decimal(28))) *100 as Protsent 
from City Ci, Country C
where C.Capital=Ci.ID

select C.Name,C.Population as RiigiElanikud,Ci.Name as Pealinn,Ci.Population as LinnaElanikud,(cast(Ci.Population as decimal(28))  / cast(C.Population as decimal(28))) *100 as Protsent 
from City Ci left join Country C on C.Capital=Ci.ID


h

select Cl.Language, SUM(Cl.Percentage * C.Population) as Total_Speakers
from Country C left join CountryLanguage Cl on C.Code=Cl.CountryCode
group by Cl.Language
order by Total_Speakers desc
select Cl.Language, SUM(Cl.Percentage * C.Population) as Total_Speakers
from Country C left join CountryLanguage Cl on C.Code=Cl.CountryCode
where C.Continent='Europe'
group by Cl.Language
order by Total_Speakers desc
select C.Name as Riik, C.Continent,C.SurfaceArea as Pindala,C.IndepYear as Iseseis_aasta,C.Population as Elanikude_Arv, C.GovernmentForm,C.HeadOfState,Ci.Name,Cl.Language as Keel
from City as Ci,Country as C, CountryLanguage as Cl
where Ci.ID=C.Capital and C.Code=Cl.CountryCode