join 3 таблиц с фильтрацией

229
05 января 2022, 00:10

У меня есть 3 таблицы.

Таблица 1 - Страна:

| PK id_страны | Название страны |

Таблица 2 - Город

| PK id_города | FK id_страны | название города |

Таблица 3 - Дом

| PK id_дома | FK город | название дома |

Нужно чтобы отображались страны в которых во всех городах нет домов.

Я сумел написать такой запрос:

SELECT country.Name FROM Country AS country
INNER JOIN City AS city ON country.CountryID = city.CountryID
LEFT JOIN Building AS building ON city.CityID = building.CityID 
Where building.CityID IS NULL

Но так в список будет попадать страна город в которой не имеет домов, то есть если в стране 3 города и в 2 из них нет домов то у меня в списке будет указана эта страна дважды, DISTINCT тоже не поможет так как в списке будет страна в которой хотя бы один город не имеет домов. Буду рад помощи!

Answer 1

Что-то вроде такого

SELECT country.Name FROM Country AS country
INNER JOIN City AS city ON country.CountryID = city.CountryID
LEFT JOIN Building AS building ON city.CityID = building.CityID 
GROUP BY country.id
HAVING sum(if(building.id is null,0,1)) = 0 --просуммируем количество домов в стране

Останутся только названия стран, в которых не будет ни одного города вообще.

READ ALSO
как jsx переводится в js код?

как jsx переводится в js код?

Не до конца понятно как именно jsx транспилируется в js кодВо всех руководствах пишется что то вроде: "вот так пишем jsx а теперь берем babel и происходит...

217
добавление цвета, при изменения числа

добавление цвета, при изменения числа

нужен js скрипт, при достижении определенной отметки например 5, у числа появляется красный цвет,( если число меньше 5 то цифра остается без...

235
Как можно в макросе Haxe поменять ключевое слово function на async function

Как можно в макросе Haxe поменять ключевое слово function на async function

У меня есть простой класс написаный на хаксе:

237
e.target.files - что такое files

e.target.files - что такое files

При работе с изображением используется такой код

160