Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте!
У меня в БД таблица со странами (название, код) и таблица с организациями (код страны, название организации, тип членства).
Нужно составить такой запрос, чтобы найти все организации, не состоящие в ВТО (WTrO).
1.В таблице Организации 225 стран, в таблице Страны 238. Сначала я нашла те, которые не состоят в организациях вообще. Это 13 стран.
2.Из другого запроса я знаю, что в ВТО состоят 150, из них имеют к ней отношение 39 стран.
SELECT DISTINCT NAME FROM ISMEMBER INNER JOIN COUNTRY ON ISMEMBER.COUNTRY = COUNTRY.CODE WHERE ORGANIZATION = 'WTrO' AND TYPE != 'member'; получаю 39 стран, 111
Остается (238-13-39-111) или 75 стран, которые являются членами организаций, но не ВТО
Я пробовала так:
SELECT DISTINCT NAME FROM ISMEMBER INNER JOIN COUNTRY ON ISMEMBER.COUNTRY = COUNTRY.CODE WHERE ORGANIZATION != 'WTrO'; в итоге получаю список из всех 225 стран этой таблицы
Я поняла, что запрос не подходит, т.к. в таблице коду страны соответствует множество организаций. И если убрать строки с ВТО, с кодом той же страны остаются строки с другими организациями. И страна, которая мне в списке не нужна, туда попадает.
Кто-нибудь знает, как выделить 75 стран из этого списка?
Неактивен
select name from COUNTRY where code not in (страны, которые не состоят в организациях вообще) and code not in (страны, не состоящие в ВТО);
Неактивен
Спасибо!
Но я не очень поняла. После code not in в первом случае я вставлю ISMEMBER (название таблицы Организации), а во втором code not in organization = 'WTrO'? Или по-другому как-то?
Неактивен
если я правильно понял вашу задачу, то в обоих случаях подзапрос из ISMEMBER
но лучше сделайте тестовый пример на десяток строк и покажите какой должен быть результат на этих данных
Неактивен
SELECT DISTINCT NAME FROM COUNTRY INNER JOIN ISMEMBER ON COUNTRY.CODE = ISMEMBER.COUNTRY WHERE ORGANIZATION NOT IN ('WTrO'); Здравствуйте! Когда делаю такой запрос, то выдает опять 225 стран - это все члены всех организаций. ISMEMBER название таблицы
mysql> DESCRIBE ISMEMBER;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| Country | varchar(4) | NO | PRI | NULL | |
| Organization | varchar(12) | NO | PRI | NULL | |
| Type | varchar(35) | YES | | member | |
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
Неактивен
А это таблица стран
mysql> DESCRIBE COUNTRY;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| Name | varchar(35) | NO | UNI | NULL | |
| Code | varchar(4) | NO | PRI | NULL | |
| Capital | varchar(35) | YES | | NULL | |
| Province | varchar(35) | YES | | NULL | |
| Area | float | YES | | NULL | |
| Population | int(11) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
Неактивен
Т.е. Россия состоит в ВТО и Россия состоит в ООН
Россия, которая в строке с ООН попадает в список, а она не должна вообще там быть.
Есть еще варианты решения?)
Неактивен
всё равно не понятно
нужны страны, которые не входят в ВТО, но при этом состоят в каких-то других организация?
или список организаций все члены, которых не состоят в вто?
или что-то другое?
Неактивен